有没有PHP函数可以在应用正则表达式模式之前对其进行转义?

我正在寻找与C#Regex.Escape()函数类似的东西.

推荐答案

preg_quote()就是您要找的:

描述

string preg_quote ( string $str [, string $分隔符 = NULL ] )

preg_quote()100,然后将一个 在每个字符前面加反斜杠 这是正则表达式的一部分 语法.如果您有一个 需要匹配的运行时字符串 在一些文本中,该字符串可以 包含特殊的正则表达式字符.

特殊的正则表达式 字符为:. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

参数

str

输入字符串.

分隔符

如果指定了可选分隔符,也将对其进行转义.这对于转义PCRE函数所需的分隔符非常有用./是最常用的分隔符.

重要的是,请注意,如果未指定$分隔符参数,分隔符(用于括起正则表达式的字符,通常是正斜杠(/))将不会转义.您通常会希望将正则表达式中使用的任何分隔符作为$分隔符参数进行传递.

Example - using preg_match to find occurrences of a given URL surrounded by whitespace:

$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
// $分隔符 argument).
$escapedUrl = preg_quote($url, '/');

// We enclose our regex in '/' characters here - the same 分隔符 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 "
// }

Php相关问答推荐

Laravel变形 map 不适用于扩展模型

此行动未经授权.升级Laravel时

PHP Perl正则表达式—URL前面没有等号和可能的单引号或双引号

如果活动订阅者的购物车中有订阅项目,则在WooCommerce签出中显示通知

在WooCommerce我的帐户部分添加带有自定义链接的自定义菜单项

用于计算付款费用的WooCommerce管理编辑产品中的自定义复选框

PHP从响应应用程序json获取文件代码和URL

WooCommerce-在选定类别中每消费X个金额即可添加免费礼物

根据WooCommerce购物车页面中的自定义 Select 添加费用

在PHP 8.2 Gloogle云引擎上加载大型php文件速度缓慢

如何在laravel中使用script type= text/html/script

模式 bootstrap 未显示

根据WooCommerce中的自定义用户元数据值更改用户角色

$this->;db->;update();CodIgnitor中的功能不工作

Shopware 6 插件:如何删除布尔配置并将其迁移到多选配置

用户注册表单中的 HTTP 错误 405

将自定义保存金额移至 Woocommerce 简单产品中的价格以下

WooCommerce - 调用功能ID不正确.不应直接访问订单属性

Laravel:ArgumentCountError: 函数 App\Mail 的参数太少

PDO 和 SQL 查询结果中日期格式不同的原因可能是什么?