PHP Preg_替换标记之间的数据,并考虑文档中的其他标记
对此可能有一个非常简单的答案,但我希望尽可能详细,以便您不需要我澄清 我正在收集每一本书的内容PHP Preg_替换标记之间的数据,并考虑文档中的其他标记,php,regex,rss,preg-replace,preg-replace-callback,Php,Regex,Rss,Preg Replace,Preg Replace Callback,对此可能有一个非常简单的答案,但我希望尽可能详细,以便您不需要我澄清 我正在收集每一本书的内容 <content><div>CONTENT</div></content> 目前,我使用两个正则表达式代码。一个用于声明,一个用于结束标记。这是可行的,但现在我需要对内容执行代码。因此,我将使用preg\u replace\u callback(),但我不知道如何将两者连接起来,以便中间是一个回调 声明: <content \w+\s*=\s*\
<content><div>CONTENT</div></content>
目前,我使用两个正则表达式代码。一个用于声明,一个用于结束标记。这是可行的,但现在我需要对内容执行代码。因此,我将使用preg\u replace\u callback()
,但我不知道如何将两者连接起来,以便中间是一个回调
声明:
<content \w+\s*=\s*\".*?\">[\r\n\s]{0,}<div \w+\s*=\s*\".*?\">
[\r\n\s]{0,}
结束:
</div>[\r\n\s]{0,}</content>
[\r\n\s]{0,}
我需要将这些内容组合起来,并将其作为回调返回。我尝试过类似于([\w\w]{0,})
,它绝对返回所有内容,但此匹配不会在结束div处停止
所以我发现了\bFULLWORD\b
命令,并在该命令上抛出了\bdiv\b
。。。但我没有成功地让它发挥作用。也许PHP不支持它?或者我很愚蠢
我不知道
请帮忙 以前有人说过,现在也有人说过,不幸的是,以后还会有人说。正则表达式是一个很棒的工具。它非常适合处理字符串和正则表达式的模式匹配 HTML不是字符串。HTML是一种标记语言,而不是常规语言。它实际上不是一个字符串,但可以解释为一个字符串(因此,为什么我们可以从技术上使用正则表达式来处理HTML)。HTML是基于元素节点的自己的语言,如果要更改某些内容,则需要操纵这些元素 正如评论中指出的,您可以轻松地在PHP中使用 您希望这样做的原因有很多:
- 更简单的是,你不需要做一些看起来像猫在键盘上走过的疯狂图案
- 更简单的是,您可以导航到特定节点,而不必处理整个文档
- 这样更安全,你不会意外地改变你不想做的事情
- 更安全的是(再次),源数据可以更改,您可以检测并解释它
- 更安全的是,你可以优雅地失败
- 检查上面链接的手册
- 只要谷歌就可以了。您已经学习了正则表达式,这要简单得多
DOMDocument
类:请参见我必须同意这次的^^“他说了Jehova!”。只有在大量工作和递归regexp的情况下才能匹配嵌套标记。使用更简单的方法,例如提取内容<代码>qp($html)->查找(“内容div”)->文本()这是一个“道德”答案,而不是对实际问题的答案。它对正则表达式的实用知识毫无帮助。我认为在没有实际回答的情况下“回答”一个问题是不合适的。这可能是您对最佳实践的想法,但它并没有贡献OP对正则表达式的工作知识(而且它来自一个有点精英主义者)。
</div>[\r\n\s]{0,}</content>