`
xombat
  • 浏览: 163494 次
  • 性别: 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中处理中文字符串截取是一项常见的任务,尤其是在网页开发中。中文字符串通常包含UTF-8编码的字符,这与ASCII编码的英文字符串处理方式有所不同。以下将详细讲解如何在PHP中正确截取中文字符串。 首先,我们...

    PHP字符串处理讲述了很多关于字符串的常用用法

    ### PHP字符串处理详解 #### 一、引言 在PHP编程中,字符串处理是一项非常重要的技能。无论是构建网页内容、处理用户输入还是与其他系统交互,掌握如何高效地操作字符串都是必不可少的。本篇文章将深入探讨PHP中的...

    php字符处理类.zip

    如果压缩包中的"php字符处理类"包含的是自定义类,那么它们可能是对上述函数的封装,或者是提供了一些额外的功能,比如: 1. 高级的文本分析,如关键词提取、情感分析。 2. 特殊的字符串格式化,如XML、JSON转换。 3...

    php截断字符串优化函数 php截断字符串优化函数

    1. **基本字符串截断方法:**PHP中最基础的字符串截断方法是使用`substr()`函数。该函数接受三个参数:原始字符串、开始位置和长度。例如,`substr($str, 0, 20)`会返回字符串的前20个字符。然而,这种方法不考虑...

    php ASCII 字符转换 (汉字及特殊字符) 宽字符 (uft8/unicode)

    在PHP编程中,处理字符编码是一项常见的任务,尤其是在处理网页内容或者用户输入时。本篇文章将探讨ASCII字符转换,特别是如何处理汉字及特殊字符,并涉及宽字符(如UTF-8和Unicode编码)的相关知识。 首先,ASCII...

    php javascript html mysql 特殊字符处理.txt

    #### 一、PHP中的特殊字符处理 PHP作为服务器端脚本语言,在处理用户输入的数据时,需要特别注意对特殊字符的转义,以防止SQL注入等安全问题。 1. **`addslashes()`**:此函数用于添加反斜杠,常用于数据库查询前...

    由php对象生成json字符串 把php对象变成json字符串.zip

    在PHP中,将PHP对象转换成JSON(JavaScript Object Notation)字符...在实际开发中,还要注意错误处理和编码选项的设置,以确保数据正确无误地传输。通过学习和理解这些知识点,你将能够更有效地在PHP中处理JSON数据。

    PHP 把字符串转换为数组支持中文

    然而,当字符串中含有中文字符时,我们需要注意编码问题。PHP默认使用UTF-8编码,大多数现代Web应用也遵循这一标准。但若字符串的编码不是UTF-8,可能会导致转换失败或出现乱码。因此,在处理非UTF-8编码的字符串前...

    PHP 计算字符串长度

    在PHP编程语言中,计算字符串长度是一个常见的任务,特别是在处理用户输入、文本处理或数据分析时。`str.php`文件很可能包含一个实现此功能的简单示例。PHP提供了内置的`strlen()`函数,用于获取字符串的长度,即...

    PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠

    在处理PHP中的JSON字符串时,经常遇到的问题是字符串中包含了不应有的转义字符,特别是反斜杠`\`。这通常发生在通过AJAX传递JSON数据到服务器时,浏览器或者中间件为了转义可能会在数据中加入反斜杠。本内容将详细...

    PHP获取字符串拼音首字母

    总的来说,获取字符串拼音首字母的PHP实现需要借助第三方库,并且要注意多音字的处理。`pinyin4php`是一个强大的工具,可以帮助我们轻松完成这个任务。在实际开发中,你可以根据项目需求调整和优化这些方法,以满足...

    字符串 php

    以下是对PHP字符串处理的一些核心知识点的详细说明: 1. **创建字符串**: - 单引号:`'Hello World!'`,在单引号中,变量不会被解析。 - 双引号:"Hello $name!",在双引号中,变量会被解析。 - 嵌套引号:可以...

    php中加密解密字符串函数类.zip

    这个"php中加密解密字符串函数类.zip"压缩包提供了一个专门用于处理字符串加密解密的类库,使得开发者能够更加方便地实现这一功能。以下是对这个类库的详细介绍: 首先,我们来了解一下加密和解密的基本概念。加密...

    PHP网站编程技术-字符串处理.doc

    【PHP字符串处理技术详解】 在PHP中,字符串处理是一项核心技能,尤其在网站编程中尤为重要。本实验报告围绕“PHP网站编程技术-字符串处理”展开,涵盖了字符串的反转、编码识别、长度计算、字符截取、比较以及HTML...

    PHP的特殊字符转译函数使用.pdf

    PHP中的特殊字符转义是一个重要的概念,尤其是在处理来自用户输入的数据时。特殊字符,如单引号(')、双引号(")、反斜线(\)和NUL(空字符),可能会导致Web应用程序中的SQL注入攻击或其他安全漏洞。为了防止这些问题...

    php过滤非法字符类.zip

    1. **参数检查**:类会接收用户提交的参数,并对这些参数进行检查,确保它们不包含可能引起安全问题的字符。 2. **字符过滤**:类内部可能定义了一系列的过滤规则,比如替换或移除特定的非法字符,或者使用预定义的...

    字符串处理类:将GBK,UTF8字符串转化为Unicode编码的php类库.zip

    在PHP编程中,字符串处理是常见的任务之一,尤其是在处理不同编码格式的数据时。这个压缩包提供的类库专门用于处理GBK和UTF8编码的字符串,并将其转换为Unicode编码,反之亦然。下面我们将深入探讨字符串编码转换的...

    php字符串加密解密的类

    这个名为“php字符串加密解密的类”的工具提供了一种方法来处理敏感信息,确保它们在传输或存储时不会被未授权的用户访问。这里我们将深入探讨PHP中的字符串加密解密原理,以及base64_encode()函数在其中的作用。 ...

    php表单敏感字符过滤代码类

    1. **敏感字符检测**:这个代码类会检查用户提交的数据中是否包含敏感字符,例如SQL关键字(如`SELECT`, `INSERT`, `UPDATE`, `DELETE`等)或者XSS攻击常用的特殊字符(如`, `&gt;`, `&`等)。通过这种方式,可以预防...

    PHP多个字符串排列组合的算法,组二,组三

    在PHP编程语言中,处理字符串的排列组合是常见的任务,特别是在数据分析、彩票系统或其他需要生成所有可能结果的场景中。本篇文章将详细讲解如何利用PHP实现字符串的组合算法,特别是针对“组二”和“组三”的组合...

Global site tag (gtag.js) - Google Analytics