基本上字符串处理函数可以完成所有你能想到的事情,如果真的无法直接完成,你可以将这些函数搭配使用封装属于你自己的字符串处理函数,下面介绍一些这些字符串处理函数的应用。 1.访问单个字符 在PHP中,可以把字符串当成一个字符的数组,可以直接用数组的访问方法来访问字符串。如$str[0]。 在这里要注意的是,如果字符是ASCII码以外时,访问会有问题,因为这种访问只能取得一个字节。 2.删除空白字符 在PHP中,可以用trim(), ltrim(), rtrim()三个函数来删除字符串开头或结尾的空白字符。 其中,trim()用于删除字符前后的空白字符;ltrim()用于删除字符左侧的空白字符;rtrim()用于删除字符右侧的空白字符。 在默认情况下,会删除以下字符:空格( |Ox20)、制表符TAB(n|Ox09)、换行(n|OxOA)、回车(r|0x0D)、空字符(|Ox00)。 也可以自己在参数里指定。 3.改变大小写 strtolower() 把整个字符串转化为小写。 strtoupper() 把整个字符串转化为大写。 ucfirst() 把字符串的第一个字符转化为大写,其它字符不变。 ucwords() 把字符串里的每一个单词的第一个字符转为大写,其它字符不变。 4.HTML转义 HTML转义是指把字符串转化成HTML显示用的字符串,对此,PHP中有两个函数实现此功能。 htmlentities() 把除空格外的所有可以转换的字符都转成HTML形式。 htmlspecialchars() 把必要的(与符号&、双引号、单引号、大于号、小于号)转化为HTML形式。 5.URL转义 URL转义是指把字符串转化成URL字符串,对此,PHP中有两个函数实现此功能。 urlencode()和urldecode()是把空格转成+号,其它的转成URL字符串,前者转换,后者反转换 rawurlencode()和rawurldecode()是把空格转成%20号,即普通URL字符串,其它的转成URL字符串,前者转换,后者反转换 6.SQL转义 跟PHP最相关的两个数据库(MySQL和PostgreSQL)都是以反斜杠为转义符的(Oracle是自己定义,其它数据库没有测试),对此PHP中用addslashes()函数来添加这些反斜杠,用stripcslashes()函数来删除这些反斜杠。 在php编程中,我们通常只会接触少量数据,载入内存的字符串串数据不会超过当前脚本执行所需的内存,而上面介绍的字符串函数完全可以满足需求。下面介绍一个笔者在采集数据处理过程中总结的一个非常方面的函数,该函数的原理是截取数据,需要指定左侧字符串和右侧字符串,返回截取后的中间字符串,完全有php基本函数组成,无需大量逻辑操作,性能较高。 /** * 用于字符串截取,用于截取2个字符串之间的内容,不含边界 * @param string $haystack * @param string $left * @param string $right * @return string */ function subByString( $haystack , $left = '' , $right = '' ) { $left_pos = false; $right_pos = false; if ( $left == '' || ( $left_pos = strpos ( $haystack , $left )) === false) { $start_pos = 0; } else { $start_pos = $left_pos ; } $right_data = substr ( $haystack , $start_pos + ( $left_pos === false ? 0 : strlen ( $left ))); if ( $right == '' || ( $right_pos = strpos ( $right_data , $right )) === false) { return substr ( $haystack , $left_pos === false ? 0 : $left_pos + strlen ( $left )); } else { $end_pos = $start_pos + $right_pos ; return substr ( $haystack , $left_pos === false ? 0 : $left_pos + strlen ( $left ), $end_pos - $start_pos ); } } 举个很简单的例子,现有一个字符串:php入门网:http://www.! 如果需要截取字符串中的网址部分,我们发现左侧字符串是一个英文的冒号:,右侧字符串是一个英文的感叹号!这时subByString识别左侧将会从php入门网:停止,识别右侧将会到!停止。最后去掉左侧,去掉右侧就可以得到http://www.这个网址了。完整的demo如下: $middle = subByString('php入门网:http://www.!', ':', '!'); var_dump($middle); //string(20) "http://www." |
|