用于正则表达式的转义字符串

2022-08-30 18:06:43

可能的重复:
有没有一个PHP函数可以在应用正则表达式模式之前对其进行转义?

我想使用存储在正则表达式的变量中的字符串。(在 PHP 中)转义字符串以用于 (PCRE) 正则表达式的最佳方法是什么?

例如

$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

会给

$text_regexp = '#m/z#i';

但是我想要以下正则表达式:

$text_regexp = '#m\/z#i';

这是一个人为的例子,但我想简单地说明这一点。


答案 1

preg_quote

从手册中:

在作为正则表达式语法一部分的每个字符的前面放置一个反斜杠

您还可以将分隔符作为第二个参数传递,它也将被转义。但是,如果您使用分隔符,则无需转义#/


答案 2

您必须使用preg_quote函数

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

必须作为整个单词匹配的示例:$keyword

$pattern = '/\b' . preg_quote($keyword, '/') . '\b/';

推荐