如何使用正则表达式和 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 中的 html src 属性

php如何正则替换css中的图片路径?

PHP 正则表达式匹配 img ,PHP 正则提取或替换图片 img 标记中的任意属性。

如何将正则表达式参数传递给 PHP 中的 preg 替换回调?

php正则表达式获取两个字符之间的文字

正则表达式替换在 PHP 中不起作用