$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 "
// }
2条答案
按热度按时间oxcyiej71#
preg_quote()
是您正在寻找的:描述
preg_quote()接受
str
,并在正则表达式语法中的每个字符前面加上一个反斜杠。如果您需要在某些文本中匹配一个运行时字符串,并且该字符串可能包含特殊的正则表达式字符,则此操作非常有用。特殊正则表达式字符有:
. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
参数
str
输入字符串。
delimiter
如果指定了可选的分隔符,它也将被转义。这对于转义PCRE函数所需的分隔符很有用。/是最常用的分隔符。
重要的是,请注意,如果未指定
$delimiter
参数,则delimiter-用于括起正则表达式的字符,通常是正斜杠(/
)-将不会被转义。您通常希望将正则表达式使用的任何分隔符作为$delimiter
参数传递。示例-使用
preg_match
查找由空格包围的给定URL:7jmck4yq2#
从T-Regx使用Prepared Patterns会更安全:
则执行正常匹配:
你甚至可以使用它与
preg_match()
: