SYMFONY 自带的 生成标签的函数(setTitle()) 会默认生成一个 <META NAME=’TITLE’…>这样的一个 标签,这个标签会在 SETTITLE 里受影响 即 同时设置两个TITLE 一个是 <TITLE>一个是<META> 根据客户需求有些时候需要删掉 META NAME=’TITLE’ 这种,办法如下
新建MyProject/app/MyApp/lib/myWebResponse.class.php 文件
插入如下代码
class myWebResponse extends sfWebResponse
{
protected $title = null;
/*
* 在Web Response 里搜索Title
*
* 返回Title字符串
*/
public function getTitle()
{
return $this->title;
}
/*
* 设置Title为响应Title
*
* 参数 title string ,Title内容
* 参数 rscape boolean true, 用以确认是否格式化字符串
* 参数 replace boolean true, 用以确认是否覆盖字符串
*/
public function setTitle($title, $escape = true, $replace = true)
{
if (is_null($title))
{
unset($this->title);
return;
}
// 注意: 如果你使用i18n 曾转码 该判断将不会工作
// 查看 include_metas() 在源文件的 AssetHelper
if ($escape)
{
$title = htmlspecialchars($title, ENT_QUOTES, $this->options['charset']);
}
if ($replace || is_null($this->title))
{
$this->title = $title;
}
}
}
在文件MyProjiect/apps/MyApps/config/factories.yml
里使用 myWebResponse 替换 sfWebResponse
例如 在factories.yml中添加(替换成)如下代码
all:
response:
class: myWebResponse
param:
send_http_headers: false
上面代码中的all可以替换成相应的模式(生产,开发等)
执行 symfony cc (用于清理symfony产生的缓存文件)
注:该程序执行原理是重写了sfWebResponse setTitle 和 getTitle 两个方法
使setTitle 添加title的时候不添加 mate name = title
sfWebResponse setTitle源代码如下
public function setTitle($title, $escape = true)
{
$this->addMeta('title', $title, true, $escape);
}
最近项目中涉及到Tw***er, 需求要使用PHP更新Tw***er中的状态, 自动加上链接地址并且链接地址要通过bit.ly进行简化.
什么是Bit.ly?
Bit.ly是一个短网址服务, 根据原网址生成一个新的较短的网址, 由于微博客发言有字数限制, 所以短网址服务在微博客中广为应用.
使用PHP调用bit.ly api有很多方法, 这里只简单提供一个例子, 详细文档和例子请登陆http://bit.ly自行查找.
使用bit.ly api首先要注册一个账户, 注册完之后会得到一个api key, 有了api key我们才能合法使用bit.ly的api, api key在个人资料中.下面是txt格式调用api的函数.
注: 打开url读取内容需要开启php的allow_url_fopen选项.
function make_bitly_url ($url, $login = 'm4ker',
$api_key = 'R_04354c1e3500db9f43f1fedaf234****') {
return file_get_contents(
'http://api.bit.ly/v3/shorten?login='.$login
.'&apiKey='.$api_key
.'&uri='.urlencode($url)
.'&format=txt');
}
把公司以前用symfony1.2做的一个项目上传到测试服务器上会出现配置文件解析错误,把除了error_reporting之外的所有配置注释掉就会好用,找个很久也没找到原因。
最后没办法开始重写配置, 终于发现原因, 原代码如下:
dev:
.settings:
error_reporting: < ?php echo (E_ALL | E_STRICT) ^ E_NOTICE ^ E_DEPRECATED ."\n" ? >
web_debug: on
cache: off
no_script_name: off
etag: off
default_culture: ja
问题就是由于 E_DEPRECATED 常量导致的,这个常量是5.3之后才添加的, 所以在5.3以下版本的php就会出现常量未定义的错误,导致配置文件解析错误,E_DEPRECATED是一些不推荐使用(也可以说是即将废弃的)的函数错误, 因为程序是在5.2下开发的, 升级至5.3错误异常的多, 所以屏蔽此错误。
解决办法,去掉E_DEPRECATED常量或者进行defined()处理。
其实这个问题很久之前遇到过, 应该是没解决, 当时的情况是openoffice打开正常而excel打开不正常, 后来也没解决了, 只能把编码转了.
这次又遇到这个问题了, 在网上一番寻找, 在一篇java的文章里找到了原因, 是由于输出的CSV文件中没有BOM.
什么是BOM?
在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。
那么如何在PHP中输出BOM呢?
在所有内容输出之前
print(chr(0xEF).chr(0xBB).chr(0xBF));
原文地址: http://foolbird.net/1517.html
taskcity.com 是一个外包的网站 ,看上去在中国做的相当不错了
里面看到不少都是国外的项目,但是价格我认为都偏低 特别是php的项目,总感觉一个网站就一百刀,一百五十刀,最多的我看到现在有四百刀,做得都挺复杂,不知道是我的技术不够 还是国外就这个行情,我感觉我是做不了 ,还有外语不是很强
不过我不行,不知道仅有的几个来 foolbirds 的朋友中有没有行的
如果您 通过 这个链接 这个注册帐号,那么您以后做的项目将会分我一定的比例,但是您拿 到的是不变的,比如一共一百刀,您还是拿一百刀,我的那五块钱,不是从这一百刀里出的,呵呵 介绍的时候是这么说的
这个手段相当狠啊,一下会有n多人为这网站 宣传,包括我