我想在$ string中的每个单词中获得'ja'的位置,但它不起作用。我做错了什么?
<?php
$offset = 0;
$find = 'ja';
$find_length = strlen($find);
$string = 'jasim jasmin jassir';
while ($string_position = strpos($string, $find, $offer)) {
echo $find.' found at '.$string_position.'<br>';
$offset = $string_position + $find_length;
}
?>
答案 0 :(得分:2)
$offset
while
会将其视为false 所以用:
替换你的while语句while (($string_position = strpos($string, $find, $offset)) !== false) {
答案 1 :(得分:1)
尝试更改offest
<?php
$offset = 1;
$find = 'ja';
$find_length = strlen($find);
$string = 'jasim jasmin jassir';
while ($string_position = strpos($string, $find, $offset)) {
echo $find.' found at '.$string_position.'<br>';
$offset = $string_position + $find_length;
}
?>
// output :- ja found at 6
ja found at 13
如果您不想更改偏移量使用
$string = ' jasim jasmin jassir'; (without space not be jasim it's 'jasim )
然后输出3
ja found at 1
ja found at 7
ja found at 14
或尝试更改条件检查
while (($string_position = strpos($string, $find, $offset)) !== false) {
答案 2 :(得分:1)
<?php
// stack overflow area
$offset = 0;
$find = 'ja';
$find_length = strlen($find);
$string = 'jasim jasmin jassir';
if (strpos($string, $find) === false) {
echo "not found";
}
else {
while (strpos($string, $find, $offset) !== false) {
$string_position = strpos($string, $find, $offset);
echo $find.' found at '.$string_position.'<br>';
$offset = $string_position + $find_length;
}
}
?>
解决方法很少,但显然有效。
输出:
ja发现在0
ja发现在6
ja发现于13
答案 3 :(得分:0)
可能你应该用这种方式编码来找到字符串位置
$positions = array();
$offset = -1;
while (($pos = strpos($string, $find, $offset+1)) !== false) {
$positions[] = $offset;
}
$result = implode(', ', $positions);
打印此结果