PHP: Как мне удалить все регулярные выражения? - PullRequest
3 голосов
/ 07 февраля 2010

Как вырезать все специальные символы регулярных выражений из строки?

Например: у меня есть "/^bla\/bla\/bla\//i", которым я хочу быть: "bla/bla/bla/"


Полагаю, это не совсем возможно в контексте, о котором я думал. Спасибо за ваши ответы

Ответы [ 3 ]

1 голос
/ 08 февраля 2010

Я не уверен, отвечает ли это на ваш вопрос, но вы, возможно, ищете функцию preg_quote (http://us.php.net/manual/en/function.preg-quote.php)?

0 голосов
/ 07 февраля 2010
    <?php 
    $string = "/^bla\/bla\/bla\//i";
    $patterns = array(
        "/\/\^([\w]+)/i" => "$1/",
        "/[\/]{2,}i$/i" => "/",
        "/\\\/" => "",
        "/[\/]{2,}/" => "/",
        "/\/$/" => "",
    );
    echo preg_replace(array_keys($patterns),$patterns,$string);

    //OR, this:
    echo    "\n";

    $string = "/^bla\/bla\/bla\//i";
    $pattern = "/(?![\/\w]$)([\w]+)/";
    preg_match_all($pattern,$string,$matches);
    echo join('/',$matches[0]);
?>
0 голосов
/ 07 февраля 2010

Я не совсем понимаю, что вы пытаетесь сделать, но если вы просто хотите удалить определенные символы из строки, вам лучше использовать strtr(). С одной стороны, это будет на намного быстрее, чем выполнение регулярных выражений, и, вероятно, также будет более читабельным.

edit: На самом деле я действительно не понимаю, чего вы пытаетесь достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...