查找字符串位置函数

// 查找字符串位置函数

$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);

posted @ 2017-06-20 17:31  追梦-在路上  阅读(1010)  评论(0)    收藏  举报