Tom*_*mba 19 php regex pcre escaping
我想在正则表达式中使用存储在变量中的字符串.跳转字符串以便在(PCRE)正则表达式中使用的最佳方法(在PHP中)是什么?
例如,
$text = 'm/z'; // this is the text I want to use as part of my regular expression
$text_regexp = '#' . $text . '#i'; // this is my regular expression
Run Code Online (Sandbox Code Playgroud)
会给
$text_regexp = '#m/z#i';
Run Code Online (Sandbox Code Playgroud)
但我想要以下正则表达式:
$text_regexp = '#m\/z#i';
Run Code Online (Sandbox Code Playgroud)
这是一个人为的例子,但我想简单说明这一点.
小智 9
preg_quote(string $ str [,string $ delimiter = NULL])
http://php.net/manual/en/function.preg-quote.php
小智 5
所有这些答案都是正确的,只有metachars需要被转义.有点太糟糕了,php没有像preg_match([operator]/$ var /)那样有一个正则表达式运算符,所以delimeters可能是引用代理.这种方式不需要在外部$ var中引用分隔符.(Perl有m //,s ///或=〜运算符)
preg_quote是一个很好的方法,不幸的是,有时你想要匹配文字'\ char'而不将其转义为'\ char',例如,并逃避其余的.preg_quote()的选择并不多.
您可以逐字设置自己的PHP函数,引用metachars(或在preg_quote()之后取消引用).
像更换所有/([{}\[\]()^\$.|*+?\\<>$delim])/
有\\$1
什么的.设置$ delim,和/或取出可能不需要转义的转义符或任何其他元素.
只是我的$ .02
归档时间: |
|
查看次数: |
16821 次 |
最近记录: |