2015-08-27 4 views
0

У меня есть слово с ускоренным апострофом в строке. Я пытаюсь использовать strpos, чтобы определить, находится ли слово с экранированным апострофом в строке или нет. К сожалению, каждый раз он повторяет ложь. Что я делаю не так? Я попытался, в strpos, с 1 сбежавшей косой чертой, 2 сбежавшей косой чертой, вплоть до 5, но каждый раз повторяется ложь.Поиск слова с ускоренным апострофом в строке с использованием strpos

$text = "example\'s"; 
$text = " ".$text." "; 

if (strpos($text, " example\\\\\'s ")) { 
echo "true."; 
} 

else { 
echo "false."; 
} 

ответ

2

Есть две проблем здесь - первый в вашем побеге строки, а второй находится в вашей логике на основе возвращения из функции strpos.

Первая проблема заключается в том, что вам не нужно избегать ввода поиска в strpos - это не функция регулярных выражений!

Вторая проблема заключается в том, что ваша (неэкранированная) строка поиска будет соответствовать нулевой позиции, которую PHP также интерпретирует как ложное значение.

РНР strpos docs here состояние:

Предупреждение Эта функция может возвращать как логическое значение FALSE, но может также возвращать не-логическое значение, которое приводится к FALSE. Пожалуйста, прочитайте раздел о Booleans для получения дополнительной информации. Используйте оператор === для проверки возвращаемого значения этой функции.

Используйте этот код вместо который должен работать нормально:

$text = "example\'s"; 
$text = " ".$text." "; 

if (strpos($text, " example\'s ") === false) { 
    echo "false."; 
} else { 
    echo "true."; 
} 

Оператор === является ключевым здесь - это означает равное значение и тип, поэтому он предотвращает интерпретатор PHP от лечения ноля как равные к false, что и в противном случае.

знакомства PHP операторов сравнения ссылка: http://php.net/manual/en/language.operators.comparison.php

Edit: Дополнительная информация о значениях PHP считает ложными: -

При преобразовании в булево, следующие значения считаются FALSE:

само логическое значение FALSE

целое число 0 (ноль)

поплавок 0,0 (ноль)

пустая строка, а строка "0"

(только PHP 4) массив с нулевыми элементами

объект с нулевыми переменными-членами

специальный тип NULL (включая неустановленные переменные)

SimpleXML объектов, созданных из пустых тегов

Каждое другое значение считается ИСТИННЫМ (включая любой ресурс).

Предупреждение: -1 считается ИСТИННЫМ, как и любое другое ненулевое (отрицательное или положительное) число!

От: http://php.net/manual/en/language.types.boolean.php

+0

Он по-прежнему вторя ложь. – jessica

+0

Nevermind. Вы редактируете лишние косые черты. – jessica

+0

Я только что обновил свой ответ - вам не нужно вообще избегать строки для 'strpos'. Можете ли вы попробовать еще раз? – beercohol

Смежные вопросы