如何在 preg_replace 中的模式中使用正则表达式特殊字符

2024-06-25

我正在尝试替换2.0来堆叠,

但以下代码将 2008 替换为 2.08

以下是我的代码:

$string = 'The story is inspired by the Operation Batla House that took place in 2008 ';
$tag = '2.0';
$pattern = '/(\s|^)'.($tag).'(?=[^a-z^A-Z])/i';
echo preg_replace($pattern, '2.0', $string);

Use preg_quote https://www.php.net/manual/en/function.preg-quote.php并确保将正则表达式分隔符作为第二个参数传递:

$string = 'The story is inspired by the Operation Batla House that took place in 2008 ';
$tag = '2.0';
$pattern = '/(\s|^)' . preg_quote($tag, '/') . '(?=[^a-zA-Z])/i';
//                     ^^^^^^^^^^^^^^^^^^^^^
echo preg_replace($pattern, '2.0', $string);

字符串未被修改。看PHP 演示 https://3v4l.org/ljIdK。这里的正则表达式分隔符是/,因此它作为第二个参数传递给preg_quote.

注意[^a-z^A-Z]匹配除 ASCII 字母之外的任何字符and ^因为你添加了第二个^在字符类中。我变了[^a-z^A-Z] to [^a-zA-Z].

此外,开始时的捕获组可以替换为单个回顾,(?<!\S),它将确保您的匹配仅发生在字符串开头或空格之后。

如果您希望在字符串末尾也匹配,请替换(?=[^a-zA-Z])(这需要一个字符而不是紧邻当前位置右侧的字母)(?![a-zA-Z])(这需要一个字母以外的字符或字符串结尾紧邻当前位置的右侧)。

So, use

$pattern = '/(?<!\S)' . preg_quote($tag, '/') . '(?![a-zA-Z])/i';

另外,考虑使用明确的单词边界

$pattern = '/(?<!\w)' . preg_quote($tag, '/') . '(?!\w)/i';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 preg_replace 中的模式中使用正则表达式特殊字符 的相关文章

  • 使用 2 个商户账户的 1 笔交易

    我需要设置一个账单支付系统 以允许使用 2 个商家帐户进行 1 笔交易 例如 1 个商家帐户附加到接收资金的客户 假设 30 美元的购买费用 并且附加我们将向帐单支付服务提供商收取 3 美元的帐单支付费用 因此 资金需要转入 2 个独立的商
  • 可以使用带有
     的 CodeIgniter 输出压缩来显示代码块吗?				
    			

    是否可以排除 pre 来自此代码点火器压缩挂钩的标签 我不太了解正则表达式 因此不会破坏我的页面 我试过了 但它总是会提高输出 EDIT 此 CodeIgniter 压缩挂钩会去除代码中所有未指定的空格和格式 以压缩输出 包括 pre 依赖
  • 为什么在打开的文件上取消链接成功?

    为什么打开的文件被删除了 在 Windows Xamp 上 我收到消息 仍在工作 但在其他 PHP 服务器上 文件被删除 即使它已打开 并且我收到消息 文件已删除 我也可以从 FTP 删除文件 即使第一个脚本仍在工作 UNIX 系统通常允许
  • Google OAuth 2 PHP 调用用户信息

    我正在尝试使用 Google 的 OAuth2 API 在他们的通用文档中 他们提到了一个名为 UserInfo 的调用 http code google com apis accounts docs OAuth2Login html us
  • 根据送货方式 ID 在 WooCommerce 新订单电子邮件通知中隐藏送货地址

    如果送货标签名为 在洛克菲勒商店提货 我想隐藏送货地址 但要显示其他提货方法 有太多的 id 例如 local pickup 3 我无法过滤 我启用了显示送货地址的功能电子邮件 电子邮件地址 php https github com woo
  • 如何使用ajax post请求将模态值插入数据库?

    查看代码 div class price div
  • 高性能简单Java正则表达式

    我正在处理的部分代码使用一堆正则表达式来搜索一些简单的字符串模式 例如 foo 0 9 3 4 bar 等模式 目前 我们使用静态编译的Java Patterns 然后调用Pattern matcher检查字符串是否包含与模式的匹配 我不需
  • 致命错误:在非对象上调用成员函数 FetchRow()

    这是我的错误消息致命错误 Call to a member function FetchRow on a non object in C AppServ www hfix include care api classes class min
  • 替换文本区域的文字

    我制作了一个 javascript 函数来将文本区域中的某些单词替换为其他单词 但它不起作用 我做了这个 function wordCheck var text document getElementById eC value var ne
  • date() 和 strtotime 的问题

    这是我所拥有的 str 12 25 2009 echo date Y m d strtotime str 这会产生 1969 12 31 而不是 2009 12 25 如果我将 str var 设置为 01 01 2009 我将得到正确的
  • PHPExcel - 如何使用 preg_replace 替换文本

    我正在使用 PHPExcel 将数据库中的数据提取到组织好的 Excel 工作表中 除了一件事之外 一切都运转良好 我的数据库条目有时可能包含 HTML 标记 例如 strong strong br p p 等等 所以我设法让这个 PHP
  • 从套接字读取数据,发送响应并关闭

    我正在开发一个 c 和 php 项目 其中 PHP 脚本打开一个到 c 程序的套接字 c 程序将读取数据 然后发回响应 在 PHP 脚本中我有以下内容 echo Opening Client fp fsockopen 127 0 0 1 1
  • PHP:注意:定义会话变量的索引未定义

    我正在制作一个带有电子邮件验证器的注册系统 您典型的 使用此代码来验证 类型的事情 我希望存储一个会话变量 以便当人们在注册页面上完成帐户注册并意外导航回该页面时 它会提醒他们需要在使用前激活帐户 使这个问题如此难以诊断的原因是我以类似的方
  • file_get_contents:即使出现错误也能获得完整响应

    是否有可能使file get contents即使发生错误也显示实际响应 否则很难调试 例如 假设您有以下代码 url https api twitter com oauth request token data array options
  • 在 Woocommerce 结帐页面上移动亚马逊按钮

    我需要移动 Woocommerce 结账页面上的 Amazon Pay 消息 按钮 我们正在使用Woocommerce 的亚马逊支付 https woocommerce com products pay with amazon 当我查看插件
  • Java(正则表达式)-获取句子中的所有单词

    我需要将 java 字符串拆分为单词数组 假设该字符串是 Hi I need to split this string into a serie s of words 目前我正在尝试使用这个String strs str split w 但
  • SQLite适合并发读吗?

    在没有锁定的情况下 SQLite 数据库的性能是否能达到每秒 50 次读取左右 我正在尝试确定它是否可以在不会经常 写入 的 PHP 网站上使用 它主要是从一小部分表中读取相同的数据 没问题 并发读 写实际上会被 SQLite 序列化 所以
  • PHP 中的随机排列对象

    如何在 PHP 中对对象进行排序 我试过shuffle 但这需要一个数组 Warning shuffle expects parameter 1 to be array object given in var www index php o
  • 构建、部署、配置和回滚所需的 Jenkins 指南,保留 5 个版本

    我对詹金斯很陌生 有一定的了解 但需要进一步的指导 我在 Git 存储库上有一个 PHP 应用程序 它使用 Composer 具有资产 具有用户上传的媒体文件 使用 Memcache Redis 具有一些代理 工作人员 并且具有迁移文件 到
  • 在 imagick php 中使用 svg 原始数据生成 SVG 图像

    我正在尝试使用从 Fabric js 获取的 svg 原始数据创建 svg 图像 我使用下面的代码使用 svg 原始数据生成 svg 但它无法正常工作 public function generate svg raw svg prefix

随机推荐