正则表达式:如何不替换任何 html 标签中的特定单词?

2023-12-01

假设我有这样的文本:

This is a great test! We're testing something awesome. Click here to <a href="whatever">test it!</a>.

我想为“test”一词添加一些颜色,但如果它位于 a 标签中则不需要。 我尝试这样做:

/(?<!href="(.*?)">)test/

但这不起作用。 它的工作原理如下:

/(?<!href="whatever">)test/

但当然我有很多链接,所以这不是一个选择。

整个代码将是这样的:

$replacement = preg_replace('/(?<!href="SOLUTION HERE">)test/','<span style="color: #FF0000;">test</span>',$replacement);

预期结果:

This is a great <span style="color: #FF0000;">test</span>! We're <span style="color: #FF0000;">test</span>ing something awesome. Click here to <a href="whatever">test it!</a>.

与 html 字符串交互的快速但不太可靠的方法是使用正则表达式。 DomDocument(或类似的)是专门为解析 html 而设计的,并且更值得信赖。我将发布正则表达式方式,如果我可以管理它,我将添加 DomDocument 方式。

(*SKIP)(*FAIL)允许您匹配/使用和取消子字符串的资格,然后在管道之后编写您实际想要替换的子字符串的模式。

图案:~(?:<[^>]*>.*?</[^>]*>(*SKIP)(*FAIL))|\btest\b~s

代替:<span style="color: #FF0000;">\0</span>

图案演示

Code: (Demo)

$string="This is a great test! We're testing something awesome. Click here to <a href=\"whatever\">test it!</a>.";
$pattern='~(?:<[^>]*>.*?</[^>]*>(*SKIP)(*FAIL))|\btest\b~s';
$replace='<span style="color: #FF0000;">\0</span>';
echo preg_replace($pattern,$replace,$string);

Output:

This is a great <span style="color: #FF0000;">test</span>! We're testing something awesome. Click here to <a href="whatever">test it!</a>.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式:如何不替换任何 html 标签中的特定单词? 的相关文章

  • 正则表达式匹配整个单词[重复]

    这个问题在这里已经有答案了 我在 stackoverflow 上看到了很多关于使用正则表达式进行全词匹配的例子 我有以下情况 我想用 www xyz com 替换 www abc com string RetVal I am going t
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • VueJS 中数据无法正确显示

    我的 VueJS 代码有一个小问题 在 输出 压缩的 GS1 数字链接 URI 部分中 When there is no result it should have nothing display like this I have remo
  • WordPress 分页自定义帖子类型

    我有一个名为 新闻 的页面 使用页面模板page newslist php 它应该显示来自自定义帖子类型 也称为新闻 的帖子 我意识到两者具有相同的名称会导致问题 因此在注册自定义帖子类型时 我进行了重写以将其与页面区分开来 rewrite
  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • 自动建议 php 的 ajax

    我有一个 html 表单 php 脚本和 jquery 我需要一个 ajax 代码来从我的 php 脚本中进行自动建议 以下是代码 表单 html
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 使用 sed 删除大括号对之间的所有内容

    我有一个看起来像这样的字符串 B F blue master F red f k b f k b K black B F green 我想删除匹配的子字符串 它可能包含也可能不包含相同顺序的其他子字符串 我应该得到 master 作为最终输
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • PHP 数组通过 JSON 转为 jquery 数组

    我有点困惑为什么以下不起作用 get php
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • 从 PHP 数组生成 HTML 表

    我不明白这一点 我需要解决看似简单的问题 但这超出了我的逻辑 我需要编写一个函数 table columns input cols 它将输出一个表 示例 input array apple orange monkey potato chee
  • 如何在laravel中注册后自动登录

    我在 laravel 中注册用户时遇到问题 user假设是包含所有数组元素的数组 同时自动登录以下代码结果false 数据库中保存的密码是hash make password user id this gt user model gt ad
  • 禁用允许文本选择的

    残疾人可以吗

随机推荐

  • SQL Server 2014 的最新 SSDT 与 SqlPackage 不兼容

    我们的一台构建服务器刚刚更新到最新的 Microsoft SQL Server 数据库工具更新 版本 12 0 60629 0 现在与我们拥有的 SqlPackage exe 版本不兼容 在 C Program Files x86 中 Mi
  • android 为什么向服务器发送信息只能使用WIFI?

    我正在通过 WIFI 向服务器发送信息 一切正常 现在我也想用移动数据向服务器发送信息 我不知道为什么只能在 WIFI 下使用 移动数据会引发无法连接的异常服务器 这是移动数据失败的部分 与 WIFI 完美配合 int length val
  • 如何在 Selenium 中导航到新网页?

    我有以下代码 driver get
  • 将向量/数组从非托管 C++ 传递到 C#

    我想将大约 100 10 000 个点从非托管 C 传递到 C C 端看起来像这样 declspec dllexport void detect targets char int More arguments std vector
  • 如何基于列进行内爆(pandas 爆炸的反向)

    我有一个如下所示的数据框 df NETWORK config id APPLICABLE DAYS Case Delivery 0 Grocery 5399 SUN 10 1 1 Grocery 5399 MON 20 2 2 Grocer
  • Java 中是否有与 GetCompressedFileSize 等效的方法?

    我希望获得 Java 中稀疏文件的准确测量 即磁盘上的实际大小 而不是包含所有 0 的正常大小 在 Windows 上的 C 中 人们会使用GetCompressedFileSize 我还没有遇到过如何在 Java 中做到这一点 如果没有直
  • 无法使用 WebClient.DownloadFile 方法从启用了 TLS 1.1/1.2 协议的计算机下载文件

    我正在尝试实现一个简单的控制台应用程序 以通过 TLS 1 1 1 2 协议使用 Webclient DownloadFile 方法下载文件 这是应用程序的代码 var downloadUrl https serverURL com sam
  • 为什么这个小函数(在opengl中画一个圆)不能在c中编译?

    我正在用 c for linux 中的 opengl 做一些实验 我有以下函数 可以根据这些参数绘制一个圆 我已经包括了 include
  • 什么寄存器指向堆?

    我刚刚学完 ARM 架构 汇编 如果 SP 寄存器保存要放入数据的下一个内存位置的地址 那么什么保存堆的地址 例如 在 C 中 如果您在堆上声明一个对象 例如MyObj example new MyObj 程序集会是什么样子 从某种意义上说
  • 算法 - 网格中的警察和小偷(N*N)

    问题陈述 给定 N N 矩阵 矩阵中的每个单元格包含警察或小偷 找出被警察逮捕的小偷数量 一名警察只能逮捕一名小偷 警察可以逮捕同一排的小偷 警察可以在K范围内逮捕小偷 例如 如果K为1 则3号牢房的警察只能在2号和4号牢房逮捕小偷 Inp
  • AVCAPTURE 图像方向

    I have a view controller which allows a user to take a picture I am setting the avcapture bounds to be the bounds of a v
  • 将 ImageView 从 alpha 0 动画到 1

    我有一个 imageView 我想以不可见的方式启动 单击某个按钮后 我想要将图像动画化到视图中 然后我希望它保持 alpha 1 我该怎么做 到目前为止还没有运气 如果我在 xml 中将 alpha 设置为 0 那么我将永远看不到图像 如
  • 为什么 PocketSphinx Android 演示需要 cygwin

    我正在尝试在 android 中开发一个语音识别程序 到目前为止我发现最流行的选择似乎是 CMU sphinx pocketsphinx 用于 android 据我了解 CMU Sphinx 的源代码是用 Java 提供的 可以在计算机上运
  • 更改导航栏的高度 iOS Swift

    我正在尝试更改我的应用程序的导航栏的高度 目前高度固定为 44 我可以从 Xcode 更改宽度 但不能更改高度 我不知道如何改变这一点 对 iOS 开发非常陌生 有人可以帮忙吗 只需将其拖放到我的视图中即可 在这种情况下 最简单的方法就是施
  • 如何在 Java 中用另一个 JPanel 替换两个 JPanel 之一?

    我为欢迎屏幕设计了一个界面 其中一个 JFrame 包含两个 JPanel JPanel1 在右侧 JPanel2 在左侧 左边的按钮是切换JPanel1 中的Panel 我想按一个按钮将 JPanel1 内容替换为另一个 JPanel 但
  • Android AlarmManager 重启后

    我有一组警报需要在重新启动后保留 我尝试在启动接收器上使用 但它们不会再次启动 我不确定我是否理解启动接收器以及如何重新启动所有警报 我已经有一个通知接收器 但不知道是否可以使用同一接收器 或者是否需要一个新的接收器 有人可以向我指出任何好
  • 如何在运行时替换 Objective-C 2.0 类方法实现

    我已经使用了 class replaceMethod 函数 它适用于实例方法 但它不适用于类方法替换 有谁知道为什么以及我应该做什么来替换类方法实现 如果你有一个Class 我们称之为MyClass 那么你必须获取它的元类来操作类方法 换句
  • 如何对 React-Redux 连接的组件进行单元测试?

    我使用 Mocha Chai Karma Sinon Webpack 进行单元测试 我点击此链接为 React Redux 代码配置测试环境 如何使用 Karma Babel 和 Webpack 在 React 上实现测试 代码覆盖率 我可
  • 条件检查Where子句

    我有一个过程 其中以下条件将写入 WHERE 子句中 我怎么做 itemid 是一个参数 可以为空 如果 itemid 可用 则将其添加到我的 where 子句中 否则什么都不做 有些人使用这种技术 WHERE itemid IS NULL
  • 正则表达式:如何不替换任何 html 标签中的特定单词?

    假设我有这样的文本 This is a great test We re testing something awesome Click here to a href whatever test it a 我想为 test 一词添加一些颜色