[b]1. in_array()函数[/b]
这段代码应该输出什么?答案是in,而不是not in。
然后测试一下这个:
返回'0'=='00'。
所以以后要注意:对于字符串不是说in,就表示那个字符在array里面。
[b]2. strtolower()函数[/b]
我在这里谈过:[url]http://www.iteye.com/topic/297460[/url],我的解决方式是:
[b]3. trim()[/b]
如果面对的是英文字符,那么trim()应该就满足了,但是对于中文字符,就应该重写以trim掉全角的空格:
[b]4. empty():[/b]
这个就有点像上面那个in_array()了,如果你要判断一个textarea里面是否有值,不能光使用empty,因为'0'字符串也会返回empty(但奇怪的是'00'就不会返回empty),重写以应对这种情况:
[b]5. htmlentities():[/b]
与strtolower()类似,htmlentities也会出现一些转义gbk字符的问题,以致出现乱码。索性这样替换:
不过现在还在疑惑为什么htmlentities会出现乱码,这样改为什么又可行。计划有时间看源代码一探究竟。
$zero = "0";
$za = array("00");
if(in_array($zero, $za, true)){
echo 'in';
}else{
echo 'not in';
}这段代码应该输出什么?答案是in,而不是not in。
然后测试一下这个:
$zero = "0";
$za = array("00");
if("0" == "00"){
echo '0 == 00';
}返回'0'=='00'。
所以以后要注意:对于字符串不是说in,就表示那个字符在array里面。
[b]2. strtolower()函数[/b]
我在这里谈过:[url]http://www.iteye.com/topic/297460[/url],我的解决方式是:
urldecode(strtolower(urlendoce($str)));[b]3. trim()[/b]
如果面对的是英文字符,那么trim()应该就满足了,但是对于中文字符,就应该重写以trim掉全角的空格:
function cntrim($value){
return trim(ereg_replace("^( )*|( )*$","", $value));
}[b]4. empty():[/b]
这个就有点像上面那个in_array()了,如果你要判断一个textarea里面是否有值,不能光使用empty,因为'0'字符串也会返回empty(但奇怪的是'00'就不会返回empty),重写以应对这种情况:
function non_szero_empty($value){
return empty($value) && $value != '0';
}[b]5. htmlentities():[/b]
与strtolower()类似,htmlentities也会出现一些转义gbk字符的问题,以致出现乱码。索性这样替换:
function _myhtmlentities($value){
//$value = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1', str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $value));
$value = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $value);
return $value;
}不过现在还在疑惑为什么htmlentities会出现乱码,这样改为什么又可行。计划有时间看源代码一探究竟。
本文探讨了PHP编程中几个实用的技巧,包括如何正确使用in_array()进行数组成员判断、使用trim()去除字符串两端的空白字符、重写empty()函数以更准确地检查变量是否为空、避免htmlentities()在处理GBK编码时出现乱码问题的方法。
458

被折叠的 条评论
为什么被折叠?



