正则表达式和正斜杠

时间:2010-06-29 22:32:48

标签: php regex preg-replace

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

即使使用逃脱它的preg_quote($find,'/'),我仍然会收到消息:

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

如果我打印查找模式,则会显示/time\\/emit/。如果没有preg_quote,它会显示/time/emit/并且都返回相同的错误消息。

任何一点知识都会有用。

4 个答案:

答案 0 :(得分:39)

尝试使用与/

不同的符号开始和结束正则表达式

我个人使用`

我见过有人使用#

我认为大多数人都很好。您可以在此处详细了解:http://pl.php.net/manual/en/regexp.reference.delimiters.php

像这样:

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

换句话说:你的$find变量应该包含#time / emit#than / time / emit /

答案 1 :(得分:2)

看起来你已经有一些东西已经逃脱了..

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

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

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

答案 2 :(得分:0)

一点代码?

该特定术语的“正则表达式”应该类似于“/ time / emit /”。使用一组关键字可能会有一种更有效的方法,因此看到你正在做的事情会很好。

答案 3 :(得分:0)

这应该有效:

$a="Hello////////"; 
$b=str_replace($a,"//","/");
echo $b;