正则表达式:如何不替换任何 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 标签中的特定单词? 的相关文章

  • 如何通过 .htaccess 删除 URL 中任何位置的空参数或参数?

    我的意思是空参数可以在 URL 中的任何位置 每次不同的位置 每次使用不同的名称 每次在不同的 php 页面上 例如 http www example com AnyPHPpageHere php parameter1 7 paramete
  • 如何在 Laravel 中编写联合查询?

    我正在使用 laravel 5 0 并且我有 mysql 查询 SELECT surat masuk id surat surat masuk nomor surat FROM surat masuk WHERE EXISTS SELECT
  • FOSUserBundle & REST Api 调用:如何使用自定义 FormType?

    我在我的 Symfony2 网站上使用 FOSUserBundle 现在我正在开发一个 API 以允许通过 REST API 调用进行注册 我已经覆盖了 FOSUserBundle 的 RegistrationController ApiR
  • 如何使用表单上的提交按钮传递参数

    我想创建一个可以更改 PHP 制作的 mySQL 中的产品数据的程序 我有自动递增并指定每个产品的键列 当我单击编辑产品链接时 它将传递我从每个产品获得的键值 并链接到 editPage php Key data Key a href ed
  • 滚动时静态标题

    我编写了一个主页 现在我正在尝试构建一个标题 该标题是静态的 就像在滚动内容时不滚动一样 当内容位于其下方时 它应该保持在顶部 我找到了这个解决方案here https stackoverflow com questions 9677894
  • 正则表达式等价

    有没有办法找出两个任意正则表达式是否等价 对我来说看起来很复杂的问题 但可能有一些 DFA 简化机制之类的 要测试等价性 您可以计算的表达式并进行比较
  • 具有固定高度、自动宽度并保持比例的图像

    我有一个反应灵敏的ul列表 其中每个li是 50 ul宽度 每一个li 我有一个图像 我想要固定的高度和 100 的宽度 保持图像的比例 例如通过缩放 请问我该怎么做 ul width 100 li width 50 float left
  • NodeJS 无法加载 css 文件

    所以我正在尝试制作一个 NodeJS 服务器 并且我尝试保留尽可能少的附加组件 但是 我遇到了一个问题 我似乎无法加载任何内容CSS我调用的文件HTML文件 该调用似乎确实由服务器处理 但它不会显示在浏览器中 My 网络服务器 js fil
  • 基本的 simpleXML 工作示例?

    看起来 PHP 中的 simpleXML 有很多问题 我在 Windows 上运行最新版本的 php 但无法让 simpleXML 的基本示例按照文档中的方式工作 我的 xml 文件是
  • 禁用任何类型的浏览器窗口滚动?

    有没有办法禁用滚动 不仅仅是滚动条 还有浏览器窗口的全部功能 根据您对 Keit 的回答 您不想在打开灯箱时滚动处于活动状态 如果是这种情况 您可以使用以下 css 在打开灯箱的同时向正文添加一个类 这个解决方案的好处是它保留了滚动 空间
  • 如何使用 PHP 从 MySQL 查询中按升序对值进行排序?

    我使用以下 PHP 脚本从 MySQL 表中获取和更改数据 并将结果打印在 HTML 表中 我希望按升序对数据进行排序 utilization percentage变量 它是由创建的 total client time total avai
  • PHP 和 ADODB 连接失败

    我的任务是迁移服务器 这包括移动我没有构建的应用程序 其中一些具有 ADODB connection 我似乎无法在新服务器上修复它 我只得到空白屏幕 我已经对 ADODB connection 与 PHP 进行了相当广泛的研究 但找不到明确
  • 优化正则表达式以过滤数千个 HTML 选择选项

    背景 我开发了一个基于 jQuery 的穿梭小部件 https stackoverflow com a 13557000 59087对于 HTMLselect元素 因为我找不到一个经过最低限度编码并提供正则表达式过滤器来补偿的元素变音符号
  • php包含来自另一个目录的文件

    这是一个结构示例 main css style css include article1 php article2 php header php index php 在我的 header php 中 我有以下 css 代码 例如 在我的 i
  • 在浏览器上录制视频并上传到LAMP服务器

    我已经尝试了很多东西 red5 jquery 网络摄像头 html5 但这些解决方案都没有录制视频并准备好上传到服务器 无论如何 html5 flash 等等 更好的跨浏览器解决方案 最好的 上传视频 音频 并将结果上传到服务器 我猜是通过
  • 从数据库生成 XML 时出现 PHP 编码错误 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试获取一个简单的 PHP 服
  • 从命令行运行 PHP 脚本

    如何使用用于解析 Web 脚本的 PHP 解释器从命令行运行 PHP 脚本 我有一个phpinfo php从网络访问的文件显示German已安装 但是 如果我运行phpinfo php从命令行使用 php phpinfo php and g
  • Javascript / jQuery - 转换特殊 html 字符

    我有一个pre元素中包含一些 html 代码 该代码中有特殊字符 例如 lt 所以它不会破坏页面 然后我有一个 javascript 函数 它获取此 pre 元素的内容 突出显示它 使用 codemirror 并用突出显示的文本替换元素内容
  • 学说“没有命名的协会”

    将我添加到无法找出其学说映射出了什么问题的人列表中 我正在模拟国际象棋Game与一对多Halfmoves 有任何想法吗 DDL create table game game id int primary key create table h
  • Laravel 集合 .each() + array_push

    需要有关 Laravel 上 each 方法内的 array push 的帮助 我无法在此代码上获取容器数组 imagesData array collect data images gt each function v k use ima

随机推荐

  • 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 一词添加一些颜色