регулярное выражение и косая черта - PullRequest
18 голосов
/ 30 июня 2010

Я ищу ключевые слова в строке с помощью регулярного выражения.Он отлично работает для всех ключевых слов, кроме одного, в котором есть косая черта: "time / emit".

Даже при использовании preg_quote($find,'/'), который избегает его, я все равно получаю сообщение:

Unknown modifier 't' in /frontend.functions.php  on line 71

Если я распечатаю шаблон поиска, он показывает /time\\/emit/.Без preg_quote, он показывает /time/emit/ и оба возвращают одно и то же сообщение об ошибке.

Любой бит знаний будет полезен.

Ответы [ 4 ]

40 голосов
/ 30 июня 2010

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

Я лично использую `

Я видел людей, использующих #

Я думаю, что большинство символов хороши. Подробнее об этом можно прочитать здесь: http://pl.php.net/manual/en/regexp.reference.delimiters.php

Как это:

 preg_match('#time/emit#', $subject);  // instead of /time/emit/

Другими словами: ваша переменная $find должна содержать скорее # time / emit # чем / time / emit /

2 голосов
/ 30 июня 2010

похоже, что у вас уже что-то ускользает от этого ..

preg_quote('time/emit') // returns time\/emit
preg_quote('time\/emit') // returns time\\/emit

как хак вы могли бы просто сделать:

preg_quote(stripslashes($find)) // will return time\/emit
0 голосов
/ 14 ноября 2013

это должно работать:

$a="Hello////////"; 
$b=str_replace($a,"//","/");
echo $b;
0 голосов
/ 30 июня 2010

бит кода?

'регулярное выражение' для этого конкретного термина должно выглядеть примерно так: / time / emit /.С набором ключевых слов может быть более эффективный метод, поэтому было бы хорошо видеть, что вы делаете.

...