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

|| 我正在寻找可以在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解析器库也有问题,但是您将比regex同行领先。获取标签文本竞争的最佳方法是在浏览器中呈现html并访问给定dom节点的innerText属性(或进行人工复制并手动粘贴内容)-但这并不总是选项:D     
这也许是“错误”的方式,但是它起作用了:当我需要做类似的事情时,我首先做一个3英镑来查找我不想匹配的东西,并使用诸如base64之类的东西对其进行编码。 然后,我可以很高兴地对结果运行普通的
preg_replace
,知道它没有机会匹配我要忽略的字符串。然后使用
preg_replace_callback
中的相同模式进行解密,这一次将匹配结果发送给base64解码。 在自动向文本中添加关键字或词汇表链接或工具提示时,我经常这样做-我对HTML标签本身进行加扰,以免在锚标签标题内或同样荒谬的地方创建链接或工具提示,例如。     

要回复问题请先登录注册