addslashes() 表示 preg_replace() 和 co.?

addslashes() for preg_replace() and co.?

提问人:Pekka 提问时间:12/17/2009 更新时间:12/17/2009 访问量:4907

问:

如何转义传入数据,以便将其用作 和 consorts 中的模式?例如,我需要与以下字符串匹配:preg_replace()

/vorschau/

显然,我需要转义“v”,否则我会得到一个错误。

我在文档中找不到任何内容。表达式中是否有某种解决方法或解决方法?addslashes()

PHP 正则表达式

评论


答:

22赞 Pascal MARTIN 12/17/2009 #1

如果我正确理解了您的问题,您正在寻找preg_quote

string preg_quote  ( string $str  [, string $delimiter = NULL  ] )

preg_quote()接受并放置一个 每个字符前面的反斜杠 这是正则表达式的一部分 语法。
如果您有以下情况,这将很有用 您需要的运行时字符串 在某些文本中匹配,字符串可能 包含特殊的正则表达式字符。
str

特殊正则表达式 角色是:. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

评论

0赞 Pekka 12/17/2009
这正是我所寻找的,但不知道的。谢谢!
0赞 Pascal MARTIN 12/17/2009
@Pekka : 不客气 :-)(我讨厌看到有人重新发明并试图重新编码这个函数的代码,实际上^^)
0赞 Ciarán Walsh 12/17/2009 #2

看起来你确实想要,但也许你应该更详细地说明你的情况,因为你很有可能试图做的事情可以用更好的方式完成。preg_quote

评论

0赞 Pekka 12/17/2009
preg_quote()是的。我需要从请求 URI 中删除一个基目录:例如,从 = 中删除会导致 ,看起来是最优雅的方式。如果你有更好的解决方案,请开火!/mydirectory/mydirectory/xyz/123/xyz/123preg_replace()
2赞 nikc.org 12/17/2009
$stripped = substr($fullpath, strlen($basedir));
0赞 Ciarán Walsh 12/17/2009
正则表达式很棒,但很少是像这样的简单字符串操作的最佳解决方案:)