2014-09-05 2 views
2

Я пытаюсь имитировать функциональность preg_qoute без экранирования символов, : () < >.Regex preg qoute mimic regex

До сих пор я был в состоянии придумать, [.\\+*?[^\\]${}=!|], и я хотел бы использовать его, как показано ниже,

preg_replace('#[.\\+*?[^\\]${}=!|]#', '\\\\$0', '(hello)/(goodbye/(<still there>))'); 

Проблемы заключается в том, что это не спасаясь от / характера, и я получаю неэкранированное исключение разделителей ,

Любые идеи?

Спасибо.

+0

Это не спасаясь от '/', потому что он не определен в наборе символов .. – hwnd

+0

Любая помощь по этому поводу? Я пробовал '\ /', но я не могу заставить его работать – SolarSync

+0

Спасибо, это блестяще. – SolarSync

ответ

3

Я бы это написал, добавив / и - к набору символов. Хотя я не понимаю, почему вы хотите подражать этой функции и оставить остальных символов без сохранения.

preg_replace('~[.+*?^$\\|[\]{}=!/-]~', '\\\\$0', '. \ + * ? [^] $ { } = ! | - () < > :'); 

Выходы

\. \ \+ \* \? \[ \^ \] \$ \{ \} \= \! \| \- () < > : 
+0

Я пытаюсь динамически строить регулярные выражения, которые обрабатывают названные группы и т. Д. Спасибо, большая помощь, я пробовал голосовать, но это не позволило мне. – SolarSync