цикл while в коде PHP, превышающий бесконечное число раз - PullRequest
0 голосов
/ 31 декабря 2018
<?php
$string="I am Azizul hakim.I am a student.I am feeling good today";
$find="am";
$i=0;
$find_length=strlen($find);
while($i<strlen($string))
{
    $pos=strpos($string,$find,$i);
    echo $pos;
    $i=$pos+$find_length;
}
?>

PHP-код выполняется бесконечное число раз. Хотя ограничение ограничивается указанием длины строки. Почему выполняется бесконечное число раз?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

В таких случаях, я думаю, Perl-совместимое регулярное выражение (pcre) всегда лучший выбор.Почему, потому что вы будете использовать только (1) вызов функции / метода, а затем простой цикл для обработки результата.При использовании функций / методов строкового типа каждый раз, когда ваша $ needle находится в вашем $ haystack, вам нужно будет вызывать другую функцию / метод строкового типа для обработки следующего вхождения вашего $ needle, найденного в вашем $ haystack!

0 голосов
/ 31 декабря 2018

strpos возвращает false, что означает 0, когда оставшиеся $string не содержат $ find и цикл начинается заново.

...