好的,我当前正在运行此脚本,以从最终的 HTML 输出中删除所有多余的空格、换行符和制表符:
$html = preg_replace(array("/\t/", "/\s{2,}/", "/\n/"), array("", " ", " "), $html);
但是,我的代码块遇到了问题,这些代码块与此处的代码块类似,因此缩进了。它将整个代码放在一行上,所以我想知道如何运行上面的代码,但仅适用于未包含在 <code></code>
中的文本标签,这是我唯一需要的元素。如果它是代码块内的文本,我知道如何执行此操作,但我对如何处理代码块外部的文本有点迷失。
我想出的唯一合理的办法是删除所有代码块,然后进行替换并将代码块放回原处。
最佳答案
我会避免单独使用正则表达式。我确信有人会发布一个半生不熟的正则表达式,它要么 1) 无法维护,要么 2) 有缺陷(或两者兼而有之),但实际上,你会想要 lex您对 token 的输入并根据这些 token 构造的上下文输出它。
我有一个工具,可以用来从现有的 HTML 创建 HTML 实体。例如,只要在更改该实体有意义的上下文中(例如,不在 I’m
code> block ,不在 URL 中等)。
我刚刚将其从旧的、布满灰尘的 Subversion 存储库导入到 Github,此处:https://github.com/scoates/lexentity
以下是使用的灵活性的示例:http://files.seancoates.com/lexentity/ (我们将其用于 http://phpadvent.org/ 的文章)
在我看来,所有这些都表明这样的系统将创建比纯粹基于正则表达式的系统更加灵活和强大的解决方案。您必须根据自己的目的修改灵活性,但可以根据需要随意借用。
小
关于php - 删除 <code> block 之外的所有空格、换行符和制表符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4456518/