字符串操作相关函数:
1.获取字符串长度:
int strlen ( string string )
<?php
$str = 'abcdef';
echo strlen($str); // 6
$str = ' ab cd ';
echo strlen($str); // 7
?>
strlen()函数是二进制安全的,这意味着所有字符串里的所有字符都会忽略它们的值被计数.但是strlen将中日等汉字以及全角字符都当作两个或四个长度计算,所以在计算这些字符时通常采用另外的函数,如:
iconv_strlen
(),mb_strlen()
$len = iconv_strlen($str, "GBK");
$len = mb_strlen($str, "GBK");
2.字符串比较
一般用的字符串用!=,==就可以了,可是如果两边类型不一样的话,那么php会自动进行类型转换(例如整数和字符比较,字符会转成整数),这时可以用===,和!==进行比较,===或!==会比较两端的数据类型,只有类型和数值完全相等才为真。
<?php
if(“abc”==”abc”){
echo “abc equal abc”; //相等,输出abc equal abc}
if(123 == “123”){
echo “123 equal string \”123\” ”;
//相等,输出123 equal….
”123”进行了类型转换,实际上进行的是if(123==123)
}
if(123===”123”){
echo “123 equal string \”123\” ”;
//不会输出,两边的数据类型不一样,一个是整型,一个是字符型}
?>
我们还可以使用php自带的字符比较函数,如:strcmp(),strcasecmp(),strncasecmp(), strncmp()
int strcmp ( string str1, string str2 )(区分大小写比较)
Returns < 0 if str1
is less than str2
; > 0 if str1
is greater than str2
, and 0 if they are equal.
如果str1小于str2的话返回<0的数值,如果str1大过str2的话返回>0的数值,如果相等的话返回0,而且strcmp()区分大小写.
//从第一位开始比较(大些字母的值要小于小写字母的值),直到不相同的字母为止echo strcmp("abcdd", "aBcde"); // 返回 1 (>0), 比较的是 "b"和"B"
int strncmp ( string str1, string str2, int len )(类似strcmp(),第三个参数可以指定比较的长度)
echo strncmp("sample","sam",3); //输出0;
int strcasecmp ( string str1, string str2 )(不区分大小写比较)
int strncasecmp ( string str1, string str2, int len )(类似strcasecmp(),可以指定比较的长度)
int strnatcmp ( string str1, string str2 )
int strnatcasecmp ( string str1, string str2 )
这两个函数有点特别,这两个函数都实现了类似人类世界的字母数字排序算法,实现了”自然排序”,详细用法参见例子:
<?php
$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
echo "Standard string comparison\n";
usort($arr1, "strcmp");
print_r($arr1);
echo "\nNatural order string comparison\n";
usort($arr2, "strnatcmp");
print_r($arr2);
?>
output:
Standard string comparison Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png ) Natural order string comparison Array ( [0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png )