[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: backslash in preg_replace
stump
Существует ли возможность заменить "\" на "/" функцией preg_replace? Теоретически?
Например вот этот сервис проверки регулярок (http://www.bl2.ru/programing/regular.html) используя регулярное выражение !\\!i выдает положительный результат preg_replace в ответ на регулярку !\\!i unescaped end delimiter. Регулярка !\\!i соответственно ищет \\, а в троке есть только \.

Но не все так просто. Потому что сервис http://planetcalc.ru/708/ тоже не воспринимает регулярку тоже не воспринимает регулярку !\\!i.

Вот и задался вопросом существует ли возможность функцией preg_replace заменить \ на /?

_____________
Трус не играет в хокей
bestxp
вообще-то открыающий и закрывающий символы должны быть одинаковые

например #^/test$# и \^/test$\ идентичны
stump
Цитата (Hello @ 13.02.2015 - 17:52)
соответственно первый слеш соответствует символу слеш, а второй слеш уже экранирует символ "!". В результате у тебя нет закрывающего разделителя - восклицательного знака, на что и ругается php.

Я знаю что так получается, но в правилах есть пометка что символ \ надо экранировать опять опять же символом \. Я хочу чтобы считывался символ \ и для который также используется для применения модификаторов таких как \w. И для того чтобы у меня получился символ \ я пишу \\ т.е. одним обратный слэшом экранирую символ \ чтобы функция отыскала символ \.

Цитата
соответственно первый слеш соответствует символу слеш


Так и есть и он же должен сработать как экранирующий символ вероятно так и происходит в bl2.ru! Первый слэш воспринимается как слэш индентифицируется как символ для применения экранирования и экраинирует второй символ \. Таким образом \\ передается в функцию как \ и происходит правильные поиск. Чего не происходит.

Отсюда и появляется вопрос существует ли такое регулярное выражение которое бы передалось в функцию замены символа как символ \ что виндузное представление файлового пути преобразовалось в представление файлового пути *.nix ? Т.е. папка\файл -> файл/папка причем именно функцией preg_replace! Вариант регулярки !\\\\! также не производит замену.

_____________
Трус не играет в хокей
stump
Цитата (bestxp @ 13.02.2015 - 17:42)
вообще-то открыающий и закрывающий символы должны быть одинаковые

например #^/test$# и \^/test$\ идентичны

Я использовал !. Что то не так с ! как делимитер?

_____________
Трус не играет в хокей
stump
В частном случае для сопоставления с самим символом обратной косой черты, используйте запись "\\" (источник)

$str = str_replace("\\", $str);


вполне работает им и пользуюсь, а с preg_replace нифига не работает. stackoverflow также на str_replace отправляет.

Почему такая ситуация с preg_replace?

_____________
Трус не играет в хокей
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.