str_replace 仅在某些 html 标签内

2023-11-30

我有一个 html 页面加载到 PHP 变量中,并使用 str_replace 将某些单词更改为其他单词。唯一的问题是,如果其中一个单词出现在一段重要的代码中,那么整个代码就会崩溃。

有没有办法只将 str_replace 函数应用于某些 html 标签?特别是:p,h1,h2,h3,h4,h5

EDIT:

重要的代码:

 $yay = str_ireplace($find, $replace , $html); 

提前欢呼并感谢您的任何答复。

编辑 - 进一步澄清:

$find 和 $replace 是包含要查找和替换的单词(分别)的数组。 $html 是包含所有 html 代码的字符串。

一个很好的例子就是如果我要查找并替换出现在例如中的单词。域名。所以如果我想用“奶酪”代替“帽子”这个词。任何出现像这样的绝对路径

www.worldofhat.com/images/monkey.jpg 将替换为: www.worldofcheese.com/images/monkey.jpg

因此,如果替换只能发生在某些标签中,则可以避免这种情况。


不要将 HTML 文档视为单纯的字符串。正如您已经注意到的,标签/元素(以及它们的嵌套方式)在 HTML 页面中具有意义,因此,您需要使用一个知道如何构成 HTML 文档的工具。这将是DOM then:

这是一个例子。首先使用一些 HTML

$html = <<< HTML
<body>
    <h1>Germany reached the semi finals!!!</h1>
    <h2>Germany reached the semi finals!!!</h2>
    <h3>Germany reached the semi finals!!!</h3>
    <h4>Germany reached the semi finals!!!</h4>
    <h5>Germany reached the semi finals!!!</h5>
    <p>Fans in Germany are totally excited over their team's 4:0 win today</p>
</body>
HTML;

这是让阿根廷高兴所需的实际代码

$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//*[self::h1 or self::h2 or self::p]');
foreach( $nodes as $node ) {
    $node->nodeValue = str_replace('Germany', 'Argentina', $node->nodeValue);
}
echo $dom->saveHTML();

只需添加您想要替换 XPath 查询调用中的内容的标签即可。使用 XPath 的替代方法是使用DOMDocument::getElementsByTagName,您可能从 JavaScript 中知道:

 $nodes = $dom->getElementsByTagName('h1');

事实上,如果你通过 JavaScript 了解它,你可能会了解更多,因为DOM 实际上是 W3C 定义的与语言无关的 API并以多种语言实现。 XPath 的优点getElementsByTagName显然可以一次性查询多个节点。缺点是,您必须了解 XPath :)

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

str_replace 仅在某些 html 标签内 的相关文章

  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • 使用 PHP 中的 GD 库在图像上绘图

    我创建了一个代码来生成随机图案图像 它创建一个具有给定宽度和高度的图像 并用 40x40 像素的小矩形填充它 这是我的代码
  • 通过身份验证保护 CodeIgniter 2 应用程序的正确方法是什么?

    I have Ion Auth http benedmunds com ion auth 正确安装并在我的服务器上运行 我也有默认的代码点火器2 新闻 教程在同一个 CI 安装中工作 我只是在玩 并对使用身份验证系统 封闭 或保护整个应用程
  • 使用 ImageMagick (PHP) 将 2 个图像并排合并为 1 个图像

    我认为这是一件容易的事 我有 2 张图片 JPG 我希望它们合并成一张图片 其中 2 张图片并排 所以我有图片 A 和图片 B 我想要图片 AB 并排 两个图像具有相同的宽度和高度 在本例中 宽度 200px 高度 300px 但是第二个图
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • Readfile 从大文件中读取 0 字节?

    我正在尝试通过以下方式发送一个大文件readfile 但是 没有任何内容发送到浏览器 并且readfile 回报0 not false 我尝试发送的文件大小为 4GiB 并且可由 PHP 读取 我正在设置set time limit 0 以
  • 在 PHP 中包含 PHP 文件

    我有一个网站 它运行 PHP if 语句来根据附加文件的类型 即 Jpg Txt MP4 显示内容 所以我显示 TXT 文件的代码是 if post attachment txt display attachment div class d
  • Smarty 如果 URL 包含

    使用 Smarty 标签我想确定 URL 是否包含单词 例如 if smarty get page contains product php 我知道 contains 不存在 但是我怎样才能轻松地编写类似的东西来实现上述代码呢 所有 PHP
  • 如何让Apache服务index.php而不是index.html?

    如果我将以下行放入index html文件 使 Apache 包含index php file 参观index html页面向我显示了这个 这是为什么 为什么它实际上不包含 PHP 文件 正如其他人指出的那样 您很可能没有 html设置为处
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • PHP 无法加载动态库“php_pdo_oci.dll”

    我在 Windows 8 上运行 Apache 2 4 7 和 PHP 5 5 9 我安装了 PHPUnit 并开始弹出此警告图像 警告 是的 我在 php ini 中启用了扩展加载以及 extension dir 以更正文件夹 并且该文件
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • PHP - 类外 use 关键字和类内 use 关键字的区别

    伙计们 美好的一天 只是想问一下有什么区别use之外的class and use在 的里面class 我也用谷歌搜索过 但我的问题与答案不匹配 Example namespace App Http Controllers Auth use
  • 通过 URL 指定控制器类与为每个控制器编写一个脚本相比,有何优缺点?

    今年夏天我安装了两个不同的 PHP 系统 每个都使用两种不同的方法 方法 1 每个任务一个 PHP 文件 该方法需要一个PHP为每个主要任务创建文件 例如 我的上传脚本可以通过http www domain com upload php O
  • 如何将我的 init 函数中的代码集中到所有控制器中?

    public function init this gt view gt user Zend Auth getInstance gt getIdentity this gt view gt siteName Zend Registry ge
  • WordPress 包含 SVG 文件错误

    我使用 PHP 和 WordPress 在本地主机上 我可以毫无问题地包含 SVG 文件 但在实时服务器上 我尝试包含一个 SVG 文件以便能够使用 CSS 对其进行样式设置 我收到此错误消息 Parse error syntax erro
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • 如何在 phalcon 框架中同时连接多个数据库在模型类中同时使用两个而不仅仅是一个

    在我的代码中我有两个数据库ABC and XYZ 我想在同一模型中使用两个数据库 而不是 phalcon 中的解决方案是什么 如何为此实现多个数据库连接 one
  • 如何从 Laravel 执行存储过程

    我需要在表单提交数据后执行存储过程 我让存储过程按照我想要的方式工作 并且我的表单正常工作 我只是不知道从 laravel 5 执行 sp 的语句 它应该是这样的 执行 my stored procedure 但我似乎在网上找不到类似的东西
  • PHP递归遍历对象树[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 在 Python 中格式化驱动器

    我正在尝试制作一个 Python 3 3 程序来格式化 Windows 中的驱动器 例如 SD 卡或 USB 记忆棒 我在这里尝试了代码 http bytes com topic python answers 537724 formatti
  • 从 Silverlight 4 调用 HTTPS-WCF 服务时出现安全错误

    我创建了一个简单的 WCF 服务 我希望可以通过 https 访问它 WCF 服务使用 UserNamePasswordValidator customBinding 和 UserNameOverTransport 作为身份验证模式 我在
  • IPython模块

    我有一些具有冗余功能的 IPython 脚本 我想将常见功能重构为一个模块 并将该模块包含在现有脚本中 问题是它不能成为 python 模块 因为代码使用 Ipython 的语言扩展 等 是否可以制作一个具有 IPython 代码的模块并将
  • 如何使用 django-mptt 创建嵌套评论系统

    我正在开发一个简单的博客 并尝试为每个帖子实现一个嵌套评论系统 我创建了评论模型 它通过 Django 管理页面运行良好 我不知道如何创建用于发布新评论和回复的表单 这是我到目前为止所拥有的 模型 py class Post models
  • Flutter Firebase.signInWithGoogle 方法未找到

    我正在尝试在我的 Flutter 应用程序中添加 Google 身份验证 但是我的Android studio找不到该方法登录Google under Firebase身份验证班级 我的意思是说当我写 FirebaseAuth 时 登录Go
  • ASP.NET Core JWT 和声明

    我对 ASP NET Core 和声明中的 JWT 身份验证有疑问 因为我不知道我是否正确理解了所有内容 当我在 ASP NET 中创建 JWT 令牌时 我添加了一些声明 其中一些可以自定义 当带有 JWT 令牌的请求从客户端发送到 API
  • 如何调整位图大小

    determine padding for scanlines int padding 4 bi biWidth sizeof RGBTRIPLE 4 4 iterate over infile s scanlines for int i
  • 通过地址访问 C 中的位域

    不允许使用其地址访问 C 中的位字段背后的原因是什么 是否因为它可能不是未系统字对齐的地址 或者因为获取字节内的位地址没有意义 因为这种类型的指针算术会很尴尬 位没有地址 这就是为什么你不能通过地址引用它们 寻址的粒度是char 我猜原因是
  • 可以在 MySQL 查询中拆分/分解字段吗?

    我必须创建一份关于一些学生完成情况的报告 每个学生都属于一个客户 这是表格 针对这个问题进行了简化 CREATE TABLE clients clientId int 10 unsigned NOT NULL auto increment
  • 寻找两个三位数乘积的最大回文数问题

    所以在欧拉计划中问题4陈述如下 回文数读起来是一样的 双向 制作的最大回文数 两个 2 位数字的乘积 数字是 9009 91 99 找到最大的回文 两个 3 位数字的乘积 我已经尝试过以下方法 include
  • 将which(,arr.ind=T)反馈回R矩阵的最佳方法?

    我提取了一些我想查看的元素的数组索引 如下所示 mat matrix 0 10 10 arrInd which mat 0 arr ind T 然后我对该矩阵进行更多操作 最终得到一个向量或行rowInd和一个列向量colInd 我希望我们
  • CSS 无法识别带有数值的 HTML ID

    这是 div div class something 我在页面上找到了其中的 9 个 位置不同 所以在 css我做的文件 div 1 something code 问题是它不起作用 我知道这是正确的选择器 但我也尝试过div somethi
  • Swift - 如何将单例设置为零

    我正在用 swift 编写一个应用程序 并使用单例在整个应用程序中共享类对象 User 我希望能够在用户注销时将此单例设置为 nil 以便当他们重新登录时旧属性不再存在 即名称 用户名等 我希望有一种简单的方法可以将单例设置回零 而不必将每
  • 如何确定行的高度?

    具体来说 我想知道 在下面的示例中 为什么要设置height第一个弹性项目的值会更改 实际上增加 第一行的高度 一般来说 我希望能够确定行的高度 我想当弹性容器的高度设置为auto或明确的值 flex container display f
  • 从 C++ 代码运行可执行 jar

    我需要执行一个jar来自某些 C 代码内部的文件 我尝试了以下命令 int ret execlp java java jar myprog jar char 0 它工作正常 但我的问题是我的 c 主线程在执行 jar 文件后停止 我不想在执
  • sqlite,地理坐标索引?

    我有一个包含地理数据的 SQLite 数据库 我的表定义如下 CREATE TABLE GEO OBJECTS ID VARCHAR 30 PRIMARY KEY NOT NULL LATITUDE NUMERIC 6 3 NOT NULL
  • iOS 中平移和滑动有什么区别?

    听起来很简单 按住触控板 移动手指 松开 但不知何故 滑动没有被触发 而是触发平移 UISwipeGestureRecognizer swipeGesture UISwipeGestureRecognizer alloc initWithT
  • 从 Flask Navigation 访问 Flask Session 变量以实现动态导航菜单

    我想要一个动态导航菜单 如果用户当前未登录 则显示 登录 如果用户已登录 则显示 注销 我正在使用类似于以下的代码 import flask import flask nav import flask nav elements as fne
  • gstreamer appsrc 适用于 xvimagesink 但不适用于 theoraenc !奥格多路复用器

    我正在尝试使用 gstreamer 和icecast 流式传输计算机生成的视频 但我无法让 gstreamer appsrc 工作 如果我使用 xvimagesink 作为接收器 我的应用程序将按预期工作 请参阅下面的注释代码 但是一旦我将
  • str_replace 仅在某些 html 标签内

    我有一个 html 页面加载到 PHP 变量中 并使用 str replace 将某些单词更改为其他单词 唯一的问题是 如果其中一个单词出现在一段重要的代码中 那么整个代码就会崩溃 有没有办法只将 str replace 函数应用于某些 h