PHP разработки


Поиск/замена по шаблону в котором есть

Размещена 22 октября, 2008 года


Сравнение с шаблоном (LIKE REGEXP) не работает в SQL если в строке есть символ '\' (обратный слэш), даже если он экранирован. Почему?

Например, почему не работает такой запрос: SELECT * FROM tableName WHERE charFieldName LIKE "%\\%" - выбрать из таблицы tableName ряды в которых поле charFieldName содержит обратный слэш (\). При этом сам обратный слэш в запросе экранирован.

Ответ: Потому что запрос неправильно записан.

Правильный запрос выглядит так:
SELECT * FROM tableName WHERE charFieldName LIKE "%\\\\%"

Чтобы выполнить поиск символа '\', его следует указать как '\\\\'.
При чиной такой записи является то, что обратные слеши удаляются дважды: сначала синтаксическим анализатором, а потом - при выполнении сравнения с шаблоном, таким образом остается только один обратный слеш, который и будет обрабатываться.

Экранирование слэша в PHP

Допустим, у нас есть переменная:
$var='abcd\f\\gh';
Задача: Убрать из строки обратные слэши.
Вроде бы можно это сделать так:
$var = preg_replace('/\\/','',$var);
Но это работать не будет. Опять же из-за удаления синтаксическим анализатором. Чтобы это работало корректно, необходимо использовать конструкцию
$var = preg_replace('/\\\/','',$var);
либо
$var = preg_replace('/\\\\/','',$var);
К сожалению, удалить двойной обратный слэш (\\) так не получится. Потому что сколько не ставь обратных слэшей в шаблоне preg_replace('/\\\\/','',$var), удалится только второй слэш (в результате получится 'abcd\f\gh'), ну или возникнет Warning.
SAPE все усложнил?

MainLink - простая и прибыльная продажа ссылок!

Последние поступления:

Размещена 06 апреля 2012 года

С детства мечтаю увидеть трёх животных: ёшкиного кота, бляху муху и сидорую козу!!!

Размещена 01 января 2012 года

Иду по лесу… Дождь, ветер, ночь… Замерз весь… Смотрю — машина стоит, подхожу, в окошко смотрю — там никого. Дверцу попробовал — открыто, ну я залез и сижу… вдруг машина поехала! Я в шоке… машина едет, я сзади сижу, за рулем никого… тут рука волосатая появляется откуда-то, порулила и исчезла… у меня волосы на попе зашевелились… тут деревня показалась, вот уже дома первые… тут машина останавливается, в салон другой мужик заглядывает и говорит:
— а ты че тут делаешь???
— да вот, еду…
— ах**ть просто!!! я толкаю, а он б*** едет!

Запуск приложений на отдельном X-сервере

Размещена 18 ноября 2011 года

Запуск игр в отдельном X сервере на примере Warcraft

читать далее…

Размещена 10 октября 2011 года

Обсуждение новости "В Японии изобрели устройство для имитации поцелуев":

...Как сообщается, с помощью этого устройства "поцеловаться" могут двое интернет-пользователей, которые находятся на удалении друг от друга...

ххх: Лучше бы изобрели устройство которое может дать по морде через итернет. Вещь была бы весьма актуальная.

Краткое Руководство по iptables: Действия и переходы

Размещена 23 сентабря 2011 года

Действия и переходы сообщают правилу, что необходимо
выполнить, если пакет соотвествует заданному критерию. Чаще
всего употребляются действия ACCEPT и DROP. Однако, давайте кратко
рассмотрим понятие переходов.

читать далее…