`
xombat
  • 浏览: 162528 次
  • 性别: Icon_minigender_1
  • 来自: 乌托邦
社区版块
存档分类
最新评论

php中字符处理注意的问题(1)

阅读更多
1.  in_array()函数
$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里面。

2.  strtolower()函数
我在这里谈过:http://www.iteye.com/topic/297460,我的解决方式是:
urldecode(strtolower(urlendoce($str)));


3.  trim()
如果面对的是英文字符,那么trim()应该就满足了,但是对于中文字符,就应该重写以trim掉全角的空格:
function cntrim($value){
	return trim(ereg_replace("^( )*|( )*$","", $value));
}



4.  empty():
这个就有点像上面那个in_array()了,如果你要判断一个textarea里面是否有值,不能光使用empty,因为'0'字符串也会返回empty(但奇怪的是'00'就不会返回empty),重写以应对这种情况:
function non_szero_empty($value){
	return empty($value) && $value != '0';
}


5.  htmlentities():
与strtolower()类似,htmlentities也会出现一些转义gbk字符的问题,以致出现乱码。索性这样替换:
function _myhtmlentities($value){
		//$value = preg_replace('/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1', str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $value));
		$value = str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $value);
        return $value;
	}

不过现在还在疑惑为什么htmlentities会出现乱码,这样改为什么又可行。计划有时间看源代码一探究竟。

分享到:
评论
9 楼 syre 2009-08-18  
那个 in_array 的,我的结果也是 not in
我是 php 5.2.4 的
8 楼 xombat 2009-07-25  
可能跟版本有关系吧,我当时测试确实发现这个问题
7 楼 xieye 2009-07-22  
zwws 写道
mark35 写道
$zero = "0";  
$za = array("00");  
   
if(in_array($zero, $za, true)){  
     echo 'in';  
}else{  
     echo 'not in';  
}  


楼主什么php版本? 我这儿输出结果是 not in !
php v4.39, centos4.7


肯定是not in了.


php5.0测试过,
not in
6 楼 zwws 2009-07-22  
mark35 写道
$zero = "0";  
$za = array("00");  
   
if(in_array($zero, $za, true)){  
     echo 'in';  
}else{  
     echo 'not in';  
}  


楼主什么php版本? 我这儿输出结果是 not in !
php v4.39, centos4.7


肯定是not in了.
5 楼 willko 2009-07-21  
mark35 写道
willko 写道

而htmlentities乱码,试下设置第三个参数,函数本身支持编码设置的..


htmlentities  $charset支持gb2312/big5/utf-8参数,但不支持GBK参数. 不知道用gb2312参数是否可以当gbk使用。

不行的gbk是gb2312的超集,可以先用iconv转换。。
4 楼 mark35 2009-07-21  
willko 写道

而htmlentities乱码,试下设置第三个参数,函数本身支持编码设置的..


htmlentities  $charset支持gb2312/big5/utf-8参数,但不支持GBK参数. 不知道用gb2312参数是否可以当gbk使用。
3 楼 mark35 2009-07-21  
$zero = "0";  
$za = array("00");  
   
if(in_array($zero, $za, true)){  
     echo 'in';  
}else{  
     echo 'not in';  
}  


楼主什么php版本? 我这儿输出结果是 not in !
php v4.39, centos4.7
2 楼 willko 2009-07-21  
strtoupper乱码,应该是用setlocal设置才对,你打错了。,如果函数返回false,原因:1.环境不支持 2.类型名无效 3.值无效

而htmlentities乱码,试下设置第三个参数,函数本身支持编码设置的..
1 楼 xombat 2009-07-20  
cntrim这个函数还是有问题,换成这个:

function cntrim($str){
return preg_replace('/^(\s| )*|(\s| )*$/', '', $str);
}


htmlentities有问题,要换成htmlspecialchars()就没问题了

相关推荐

    PHP中常用的字符串格式化函数总结

    注意:在PHP中提供的字符串函数处理的字符串,大部分都不是在原字符串上修改,而是返回一个格式化后的新字符串。 一、取出空格和字符串填补函数 空格也是一个有效的字符,在字符串中也会占据一个位置。用户在表单...

    php7 参数、整形及字符串处理机制修改实例分析

    主要介绍了php7 参数、整形及字符串处理机制修改,结合实例形式分析了php7 参数、整形及字符串处理机制较旧版本的区别及相关操作注意事项,需要的朋友可以参考下

    PHP将字符分解为多个字符串的方法

    分解字符串主要通过Split()函数实现,该函数用于指把一个字符串通过指定的字符分解为多个子串,并分别存入数组中。其语法声明如下: array split(string pattern,string str[,int limit]); 其中的参数: pattern:...

    PHP中字符串长度的截取用法示例

    本文实例讲述了PHP中字符串长度的截取用法。分享给大家供大家参考,具体如下: php中提供了很多使用函数,其中字符串的截取函数也不例外,而且功能也...这里的编码格式一定得注意,处理不当有可能出现乱码。 更多关于

    用PHP中的 == 运算符进行字符串比较

    最近在Greg Beaver’s的blog上发表的一篇新文章 comparing strings in PHP with the == operator 中提及了PHP的 == 运算符在对字符串进行比较时值得注意的问题。 在某些情况下,PHP会把类数值数据(如含有数字的...

    php 字符转义 注意事项

    今天碰到一个处理文件特殊字符的事情,再次注意到这个问题

    PHP编程中字符串处理的5个技巧小结

    字符串 注意单引号和双引号的区别 注意转义字符\的使用\\,\”,\$ 注意使用8进制或16进制字符表示 \xf6 echo “H\xf6me”;//需要察看是否支持此类文字编码 ———————输出结果—————————————- H鰉e...

    PHP字符串的递增和递减示例介绍

    今天看到php手册上有这么一段话: “在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。例如,在 Perl 中 $a = ‘Z’; $a++; 将把 $a 变成’AA’,而在 C 中,a = ‘Z’; a++; 将把 a 变成 ‘[‘(’...

    php字符串截取函数mb_substr用法实例分析

    本文实例讲述了php字符串截取函数mb_substr用法。分享给大家供大家参考,具体如下: string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )-截取...

    PHP字符串与数组处理函数用法小结

    主要介绍了PHP字符串与数组处理函数用法,结合实例形式详细分析了PHP字符串与数组常用处理函数功能、定义、使用方法与操作注意事项,需要的朋友可以参考下

    PHP入门到精通

    24.3Ajax开发需要注意的几个问题 24.4在PHP中应用AJAX技术的典型应用 Web Service与SOAP技术(教学录像:31分1秒) 25.1Web Service技术 25.2SOAP协议 25.3WSDL文档 25.4UDDI规范 25.5PHP内置SOAP类库 25.6使用...

    PHP入门到精通02

    24.3Ajax开发需要注意的几个问题 24.4在PHP中应用AJAX技术的典型应用 Web Service与SOAP技术(教学录像:31分1秒) 25.1Web Service技术 25.2SOAP协议 25.3WSDL文档 25.4UDDI规范 25.5PHP内置SOAP类库 25.6使用...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    9-5 2.php xml编程②-cdata 实体字符 处理指令 dtd快速入门 编?绦Q閤ml 9-5 3.php xml编程③-内部dtd 外边dtd dtd元素 dtd修饰符 9-5 4.php xml编程④-dtd属性 引用实体 参数实体 ide开发xml 9-5 5.php xml编程⑤-...

    php网络开发完全手册

    7.6 字符操作的注意事项 117 7.7 小结 118 第8章 数组操作与数据结构算法 119 8.1 一维数组与多维数组 119 8.1.1 一维数组简介 119 8.1.2 多维数组简介 119 8.2 常用的数组操作 120 8.2.1 数组的创建与调用 120 ...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    9-5 2.php xml编程②-cdata 实体字符 处理指令 dtd快速入门 编?绦Q閤ml 9-5 3.php xml编程③-内部dtd 外边dtd dtd元素 dtd修饰符 9-5 4.php xml编程④-dtd属性 引用实体 参数实体 ide开发xml 9-5 5.php xml编程⑤-...

    (全)传智播客PHP就业班视频完整课程

    9-5 2.php xml编程②-cdata 实体字符 处理指令 dtd快速入门 编?绦Q閤ml 9-5 3.php xml编程③-内部dtd 外边dtd dtd元素 dtd修饰符 9-5 4.php xml编程④-dtd属性 引用实体 参数实体 ide开发xml 9-5 5.php xml编程⑤-...

    PHP字符串word末字符实现大小写互换的方法

    本文实例讲述了PHP字符串word末字符实现大小写互换的方法。分享给大家供大家参考。具体实现方法如下: 一、要求: 给出一个字符串如 “A journey of, a thousand ‘miles’ must can’t \”begin\” with a single ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(&#92;)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $second = "World"; $full1 = "$first $second"; # ...

    php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创

    主要介绍了php使用strpos判断字符串中数字类型子字符串出错的解决方法,结合具体问题分析了strpos函数针对数字类型子字符串进行判断时的注意事项及类型转换处理技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics