PHP:正则表达式替换,同时忽略 html 标签之间的内容

标签 php html regex tags

我正在寻找一个正则表达式字符串,它可以找到不在 html 标签之间的单词或正则表达式字符串。

假设我想将 (alpha|beta) 替换为:希腊字母表中的前两个字母是 alpha<b>beta</b>

我只想用它代替 alpha,因为 beta 位于 <> 标签之间。所以忽略(<(.*?)>(.*?)<\/(.*?)>)

:)

最佳答案

我没有测试此页面中使用的逻辑 - http://www.phpro.org/examples/Get-Text-Between-Tags.html但我可以确认页面顶部用大粗体字母提出的逻辑观点,即您不应该做您尝试使用正则表达式做的事情。

Html 并不统一,如果您在任何现实情况下使用正则表达式来处理这些标签的内容,边缘情况总是会在后面咬您。因此,除非您的标记极其简单、统一、100% 准确、仅包含 html(不包含 css、javascript 或垃圾),否则您最好的选择是 dom 解析器库。

实际上,许多 dom 解析器库也存在问题,但您将比正则表达式同行领先数英里。获取标签文本内容的最佳方法是在浏览器中渲染 html 并访问给定 dom 节点的 insideText 属性(或者手动复制并粘贴内容) - 但这并不总是一个选项:D

关于PHP:正则表达式替换,同时忽略 html 标签之间的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5688552/

相关文章:

css - 如何使用 css 制作此导航栏?

Python - 使用 string.replace 转义双引号

php - 创建元素和 insertBefore 不起作用

使用私钥和 PKCS1 的 PHP RSA 加密

javascript - 如何使用JQUERY增加或减少数量

匹配除文字字符串 'NIL' 或 'nil' 之外的任何内容的 Java RegEx

c++ - URL 的 QRegExp 模式

php - 有效地从数据库下拉列表中获取值

php - 将多维数组的值存储到变量中

html - 内有全屏图像的正文边框