如何找到字符串位置php

时间:2014-04-23 09:06:08

标签: php string

我想在$ 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;
}
?>

4 个答案:

答案 0 :(得分:2)

  1. 将变量名称更改为$offset
  2. strpos可能会返回0而while会将其视为false
  3. 所以用:

    替换你的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);

打印此结果