【问题标题】:regular expression and forward slash正则表达式和正斜杠
【发布时间】:2011-03-09 21:14:14
【问题描述】:

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

即使使用 preg_quote($find,'/') 转义它,我仍然收到消息:

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

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

任何一点知识都会很有用。

【问题讨论】:

    标签: php regex preg-replace


    【解决方案1】:

    这应该可行:

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

    【讨论】:

      【解决方案2】:

      尝试使用与 / 不同的符号开始和结束正则表达式

      我个人使用`

      我见过有人使用#

      我认为大多数字符都很好。你可以在这里阅读更多信息:http://pl.php.net/manual/en/regexp.reference.delimiters.php

      像这样:

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

      换句话说:您的$find 变量应该包含#time/emit# 而不是/time/emit/

      【讨论】:

      • 优雅的解决方案,用斜线字符解决了我所有的问题。
      【解决方案3】:

      看起来你已经有什么东西在逃逸了..

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

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

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

      【讨论】:

        【解决方案4】:

        代码?

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-01
          • 2019-01-05
          • 1970-01-01
          相关资源
          最近更新 更多