В PHP strpos () не может найти двойную кавычку ('"') в строке - PullRequest
2 голосов
/ 31 января 2010

Оба это:

echo 'Tok: '.$tok.' Strpos: '.strpos($tok, "\"").' length: '.strlen($tok).'<br>';

А это:

echo 'Tok: '.$tok.' Strpos: '.strpos($tok, '"').' length: '.strlen($tok).'<br>';

Результат в следующем выводе:

Tok: "fresh Strpos: length: 11

Strpos полностью не может найти двойную кавычку, он возвращает false (я проверял с помощью strpos () === false). Может кто-нибудь сказать мне, что здесь происходит? Я не могу найти документацию, предполагающую, что strpos не может обрабатывать двойные кавычки, почему он не находит это? Я в своем уме.

Ответы [ 3 ]

9 голосов
/ 31 января 2010

Вы уверены на 1000%, что двойная кавычка в $tok на самом деле является литералом ", а не сущностью HTML? Можете ли вы проверить свой HTML-код?

2 голосов
/ 31 января 2010

Используя php в командной строке, ваш код работает для меня.

Я заметил, что вы не указали содержимое $ tok. Я также заметил, что похоже, что вы выводите в браузер. Вы уверены, что HTML

&quot

не используется вместо реального символа кавычки?

1 голос
/ 31 января 2010

strpos ($ tok, '"') равно === 0 в вашем случае, так как самый первый элемент в $ tok - это двойная кавычка ("). Затем, когда вы печатаете 0, вы ничего не получаете, потому что это логическое значение ЛОЖЬ.

Эта функция может возвращать логическое значение ЛОЖЬ, но может также вернуть небулево значение, которое оценивается как ЛОЖЬ, например 0 или "". Пожалуйста, прочитайте раздел о логических значениях для более Информация. Используйте оператор === для тестирование возвращаемого значения этого функция - http://us3.php.net/strpos

...