有一个PHP函数,可以逃避正则expression式模式之前,他们被应用?
有一个PHP函数,可以逃避正则expression式模式之前,他们被应用?
我正在寻找的东西沿C# Regex.Escape()
函数的行。
preg_quote()
是你在找什么:
描述
string preg_quote ( string $str [, string $delimiter = NULL ] )
preg_quote()需要
str
并在正则expression式语法中的每个字符的前面放置一个反斜杠。 如果您需要在某些文本中匹配运行时string,并且该string可能包含特殊的正则expression式字符,这非常有用。特殊的正则expression式字符是:
. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
参数
海峡
inputstring。
分隔符
如果指定了可选的分隔符,它也将被转义。 这对于转换PCREfunction所需的分隔符非常有用。 /是最常用的分隔符。
重要的是,请注意,如果没有指定$delimiter
参数, 分隔符 (用于包含正则expression式的字符,通常是正斜杠( /
))将不会被转义。 您通常会想要将正在使用的$delimiter
作为$delimiter
parameter passing给正则expression式。
示例 – 使用preg_match
查找由空白包围的给定URL的出现次数:
$url = 'http://stackoverflow.com/questions?sort=newest'; // preg_quote escapes the dot, question mark and equals sign in the URL (by // default) as well as all the forward slashes (because we pass '/' as the // $delimiter argument). $escapedUrl = preg_quote($url, '/'); // We enclose our regex in '/' characters here - the same delimiter we passed // to preg_quote $regex = '/\s' . $escapedUrl . '\s/'; // $regex is now: /\shttp\:\/\/stackoverflow\.com\/questions\?sort\=newest\s/ $haystack = "Bla bla http://stackoverflow.com/questions?sort=newest bla bla"; preg_match($regex, $haystack, $matches); var_dump($matches); // array(1) { // [0]=> // string(48) " http://stackoverflow.com/questions?sort=newest " // }