1.字符串长度函数
字符串长度函数:strlen();
计算的是字符串的字节长度; mb_strlen();
是根据编码计算字符串的字符个数。
在 utf-8
编码规则中,一个中文占三个字节,gbk
编码格式中是一个汉字占两个字节。
2.查找字符串中子字符串位置的函数
strpos ( string $haystack , mixed $needle [, int $offset = 0 ] );
第二个参数的意思是可以传混合类型;(无论是在字符串中还是在数组中都是从零开始读取其中内容的)。
offset
的作用,除了第一次出现的字符,这个字符第二次还会不会出现?offset
的意思就是说,把光标先偏移一段距离,再查找,别从头开始查找。
在计算机里,ascll
字符集中,如果你的第二个参数写的是整形,则把它理解为 ascll
字符的编码。
注意,当你查找的字符在字符串中的第一个位置时,如果用简单的 if
判断,此时的函数并不能识别第一个找到的字符,因为字符串是从零开始识别的。所以这时候你要这样用:注意这里的===(去等于号)(在 strpos
这里三等于和两等于的区别很好的体现出来了)。
思考题:用for循环或while循环,配置strpos,计算某父串中子串的个数?
<?php
function subnum($str, $sub){
//子串的长度
$sublen = strlen($sub);
//父串的长度
$strlen = strlen($str);
if($sublen > $strlen){
return 0;
}
for($offset=0,$num=0; ($offset=strpos($str,$sub,$offset)) != false;){
$num += 1;
$offset += $sublen;
}
return $num;
}
$str = 'wo ni ta ta ni wo wo';
$sub = 'wo';
echo subnum($str,$sub);
/*
php的字符串函数非常强大,你要是不了解,可能会多花很多的冤枉时
间,做很多的无用功,去费力写出一个函数,结果其实早就已经存在。其实只需要一个函数帮你解决问题了,所以一定要熟悉php的字符串函数(上面的那个思考题,可以直接用一个字符串函数实现,比如说substr_count())。
*/