PHP strpos () возвращает пустое значение - PullRequest
0 голосов
/ 05 марта 2019

Странная вещь встречается с функцией PHP strpos (). У меня есть функция, которая проверяет, найдена ли переданная строка в текстовом файле. Я могу отображать содержимое файла построчно, но strpos () не возвращает значение (на самом деле ничего). var_dump () возврата пусто.

Может кто-то увидеть ошибку, потому что я заблудился. Заранее спасибо.

Моя функция:

function checkIfExist($string)
{
    $path = "\\\\server\\temp\\test.txt";
    $file = file($path);
    foreach( $file as $line )
    {   
       echo $line; //display the string in this line
       $found = strpos($file,$string);
       echo $found; //display nothing, not even a boolean/int 
}
return $found;
}

Ответы [ 5 ]

0 голосов
/ 06 марта 2019

Настройка отладки, поэтому вы видите значения strpos.Если отладка не может быть организована, тогда vardump $ line и $ string.Вы, вероятно, получите неожиданные значения.Также старайтесь избегать проблем с типизацией.Возможно, это будет работать лучше.

if (strpos($line,$string) != false){...}else{...}
0 голосов
/ 06 марта 2019

Этот код дает тот же результат

foreach( $file as $line )
{   
    echo $line; //display "www.google.be"
    echo $string; //also display "www.google.be"
    //but when I then if the line contain the string, the function doesn't find 
      it!!!
    $pos = stripos($line,$hostname);
    var_dump($pos); // FALSE for all the test
}

Я сделал это в другом коде, и у меня никогда не было этой проблемы.

0 голосов
/ 05 марта 2019

Повтор ложного логического выражения не появится.Попробуйте изменить его на var_dump, и вы увидите, что для boolean установлено значение false.

0 голосов
/ 06 марта 2019

Извините, я допустил ошибку при написании кода, это хорошо:

function checkIfExist($string)
{
    $path = "\\\\server\\temp\\test.txt";
    $file = file($path);
    foreach( $file as $line )
    {   
       echo $line; //display the string in this line
       $found = strpos($line,$string);
       echo $found; //display nothing, not even a boolean/int
       var_dump($found); //display boolena(false) for all the test even if the 
                         string is well present once.


}
    return $found;
}
0 голосов
/ 05 марта 2019

Попробуйте изменить $found = strpos($file,$string); на $found = strpos($line,$string);

...