// 查找字符串位置函数
$str = \'how are you! fine thank you, 98 may be you are right, I dont think so. let me see.\';
echo strpos($str, \'you\'); // 输出8 定位到you前面
// 表示从0开始,到第八个字符出现所要查找的字符串
echo strpos($str, 98); // 输出36 定位到 be 前面
// 表示将98理解为ASCII码值,解析为b 找到be
echo strpos($str, \'98\'); // 输出29 定位到 98 前面
// 加单引号的98理解为字符串,所以查找98 字符串。
var_dump(strpos($str, \'dai\')); // 输出 false
// 如果未找到,返回 false。
echo strpos($str, \'you\', 9); // 输出 24
// 表示 向右便宜9个位置开始查找,即查找出第二个you 的位置
// 综合练习1
// 写一个小函数,判断制定的父串中是否有子串
function findsub($str, $find) {
// 这里要用 全等于 === 符号判断
// 因为如果在第一个位置出现,strpos 返回0
// 在if语句中,将0理解为false,表示未找到
if(strpos($str, $find) === false) {
echo \'没有找到\', $find , \'字符串。<br />\';
}else{
echo \'已经找到\', $find , \'字符串。<br />\';
}
}
$title = \'today is sunny.\';
$sub = \'today\';
findsub($title, $sub); // 输出 已经找到today字符串。
// 综合练习2
// 用for循环,结合strpos函数,计算父字符串中出现子字符串的次数。
function subnum($str, $sub) {
$strlen = mb_strlen($str, \'utf-8\');
$sublen = mb_strlen($sub, \'utf-8\');
if($sublen > $strlen) {
return 0;
}
for($offset = 0, $num = 0; ($offset = strpos($str, $sub, $offset)) !== false;) {
$num = $num + 1;
$offset = $offset + $sublen;
}
return $num;
}
$str2 = \'you\';
echo subnum($str, $str2);
// 此函数也可以统计出现字符串的次数
echo substr_count($str, $str2);