如何使用正则表达式和 PHP 替换两个 HTML 标记之间的文本? [复制]
Posted
技术标签:
【中文标题】如何使用正则表达式和 PHP 替换两个 HTML 标记之间的文本? [复制]【英文标题】:How can I replace text between two HTML tags using regex and PHP? [duplicate] 【发布时间】:2021-02-12 22:37:51 【问题描述】:我想替换两个 html 标记之间的文本,它可能包含许多 HTML 标记。
我想使用preg.replace()
;
<div class="doe"><span>replace text here</span></div>
什么是正则表达式模式?
【问题讨论】:
使用HTML/DOM解析库不是更好吗? 或者只使用JS innerHTML 我必须通过 php 和 regex 来实现这一点。谢谢。 这能回答你的问题吗? Regex select all text between tags 没有。这个问题没有预定义的标签,而是任何 html 标签。 【参考方案1】:如果页面已经生成,您将无法使用 PHP 执行此操作(PHP 是服务器端)。
一个简单的方法是使用 jQuery。
<script>$(".doe").html('<span>new text</span>');</script>
这将动态更新 div 的全部内容。
如果你想使用来自 PHP 页面的数据,你可以使用Ajax 来更新 DIV。您只需阅读 PHP 页面并使用 Ajax 使用数据更新 DIV(您可以将其添加到“onclick”事件或其他任何内容中)
$.ajax(
url: "page.php",
success: function(response)
$(".doe").html(response);
(这是一个非常基本的解释,因为我不确定您到底想做什么。)
更新#1:
根据您的评论,您需要这个:
$str = '<div class="doe"><span>replace text here</span></div>';
$regex = '/<div class="doe"><span>(.*?)<\/span>/';
$replace = '<span>replaced</span>';
echo preg_replace($regex, $replace, $str);
【讨论】:
我实际上是在使用 wordpress 钩子,所以,我可以在页面加载之前替换文本。 那么你想要我在评论中所做的编辑。 谢谢。 html 标签可能因代码而异。在一个地方,它可能是在此处替换文本
。在另一个地方,它可能是在此处替换文本
。这就是我寻求正则表达式模式的原因。 这就是我寻求正则表达式模式的原因。这样只有 html 标签之间的文本会被更改,而不是像 @DonbeStup 如果您需要替换的文本始终相同,那么您可能只需进行简单的字符串替换,不需要正则表达式。除非您认为完全相同的文本也可能出现在同一页面的其他地方 - 这可能吗? (但如果要替换的文本有时不同,HTML 标记有时也不同,并且文本可能出现在多个位置,那么真正的问题是您将如何真正确定需要替换的内容?会有没有什么可以尝试检测的。)以上是关于如何使用正则表达式和 PHP 替换两个 HTML 标记之间的文本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
PHP 正则表达式匹配 img ,PHP 正则提取或替换图片 img 标记中的任意属性。