您当前的位置:首页 > 网站建设笔记 >

preg_quote()转义正则表达式中的特殊字符

0

问题:希望将正则表达式中类似*+等字符处理为字面字符,而不是元字符。如果允许用户键入搜索字符串,并且要在一个正则表达式中使用这些搜索字符串,这就很有用。
解决方案:使用preg_quote()转义PCRE元字符

下面是preg_quote()转义的字符:
. \ + * ? ^ $ [ ] ( ) { } < > = ! | :
它会用一个反斜线对这些元字符转义。

还可以向preg_quote()传入要转义的另一个字符作为第二个参数。传入模式定界符(通常是/)作为第二个参数很有用,这样它也会得到转义。如果要将用户输入结合到一个正则表达式模式中,这很重要。下面的代码希望从一个Web表单得到$_GET["search_term"],并搜索字符串$s中以$_GET["search_term"]开头的单词:

preg_quote

使用preg_quote()可以确保用户输入特殊的搜索串时可以正确地解释正则表达式,例如,一个Magnum, P.I.影迷可能输入t.c作为搜索项。如果没有preg_quote(),这会匹配tic、tucker和第1个字母是t而且第3个字母是c的所有其他单词。将模式定界符传入preg_quote()可以确保包含斜线的用户输入也能得到正确的处理,如CP/M。

顶部中部底部