2010-06-29 140 views
15

我正在通过正则表达式搜索字符串中的关键字。它适用于所有关键字,可以在其中包含正斜杠:“time/emit”。正则表达式和正斜杠

即使使用preg_quote($find,'/'),从而逃脱它,我仍然得到消息:

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

如果我打印发现模式,它显示​​。没有preg_quote,它会显示/time/emit/,并且两者都返回相同的错误消息。

任何一点知识都是有用的。

回答

31

尝试开始和不同的标识尾部正则表达式比/

我个人使用`

我使用#

见过的人,我认为大多数字符都不错。你可以阅读更多关于它在这里:http://pl.php.net/manual/en/regexp.reference.delimiters.php

像这样:

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

换一种方式:您$find变量应该包含相当#时间/发射#比/时间/发射/

+0

后面打勾做的伎俩! – pixeline 2010-06-29 23:35:04

+0

优雅的解决方案,用斜线字符解决了我所有的麻烦。 – Seth 2012-09-25 23:59:33

0

点点代码?

该特定术语的'正则表达式'应该看起来像'/ time/emit /'。有了一组关键词,可能会有更高效的方法,所以看到你在做什么会很好。

2

看起来你有一些已经逃离吧..

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

,你可以简单地做一个黑客:

preg_quote(stripslashes($find)) // will return time\/emit 
0

这应该工作:

$a="Hello////////"; 
$b=str_replace($a,"//","/"); 
echo $b; 
相关问题