<?php
$efFect=0;
$find='is';
$find_len=strlen($find);
$string22 ='this is space is function';
while ($str_position =strpos($string22,$find,$effect)){
echo $find.'the postion in '. $str_position.'<br>';
$efFect = $str_position + $find_len ;
}
?>
答案 0 :(得分:0)
0是假值。您应该通过检查strpos是否实际返回false来使您的检查更可靠。
<?php
$effect=0; // not $efFect as variables names are case sensitive in PHP
$find='is';
$find_len=strlen($find);
$string22 ='this is space is function';
while (($str_position = strpos($string22, $find, $effect)) !== False){
echo $find.'the postion in '. $str_position.'<br>';
$effect = $str_position + $find_len ;
}
?>
来自文档:
返回针存在于相对于haystack字符串开头的位置(与offset无关)。另请注意,字符串位置从0开始,而不是1。
如果未找到针,则返回FALSE。
有人提到你的代码创建了一个无限循环,但事实并非如此。 strpos
接受offset
作为您正确使用的第三个参数。在每次迭代中,偏移量递增,使得新搜索将从最后找到的结果字符串结束的位置开始,从而避免无限循环。