Не удается найти слово с кавычкой в ​​текстовом файле при переполнении стека

У меня есть текстовый файл, и я хочу проверить, содержит ли файл строку wor"dddddd, Предположим, что это содержимое текстового файла:

...,sometext,moretext,wor"dddddd,867767,3468647,sometext,...

Вот мой код, я не знаю, почему он не работает (печатает 8 вместо 3):

    <?php
$id='wor\"dddddd';
$fopen = fopen("file.txt", 'r');
$content= htmlspecialchars(file_get_contents("file.txt"));//
$split=explode(",", $content);
$arr_len=count($split);
$pos=0;
$result=array();

//finding the position of the word in the array
foreach ($split as $x){
if(stripos($id, $x)!==false) {
break;}
$pos++;
}

echo $pos;//should print 3, but it prints 8 i.e it's not find the word wor"dddddd
?>

Я не знаю, почему, если внутри слова есть кавычка, которую он не находит, я попытался добавить обратную косую черту \ (строка 2 в моем коде), как вы можете видеть, но все равно вывод 8. Что мне делать, если я знаю, что слово, которое я хочу найти в текстовом файле, содержит кавычку?

0

Решение

Здесь у вас есть пара или ошибки.

Сначала в строке

$id='wor\"dddddd';

Вам не нужно убегать " в строке в одинарных кавычках. Итак, вы пытаетесь найти 'wor\"dddddd' вместо 'wor"dddddd', Очевидно, что этого не произойдет.

Следующая ошибка возникает при использовании htmlspecialchars,

Эта функция превратит кавычки в html-сущности, поэтому вместо wor"dddddd у тебя будет wor&quot;dddddd, Опять же, вы можете найти wor"dddddd когда у тебя есть wor&quot;dddddd,

Итак, решение:

$id = 'wor"dddddd';
$content= file_get_contents("file.txt");
// following lines remain unchanged

Бонус: Вы можете заменить цикл $split с одной строкой:

$pos = array_search($id, $split);
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector