PHP突出显示html标签whitin加载html内容

梅维亚

最近,我一直在致力于应用程序的应用,该应用程序允许用户创建html模板并通过复制代码来使用它。一切正常,但文件太大,约有300行html代码,很难保持某种顺序并迅速找到需要替换/修复的代码部分。我已经看过一些用于突出显示的javascript库,但是我不想要那样,我只想创建一些简单的基于php的文件供我使用。

到目前为止,我已经得到了:

<style>
body {
    font-size:30px;
}

.div_tag {
    color:blue;
}
.a_tag {
    color:green;
}
</style>

<body>
<?php
ob_start();
include 'content.php';
$source = ob_get_contents();
ob_end_clean();

$all_lines = explode("\n", $source);

foreach($all_lines as $line) {
    echo preg_replace(array(
        '/<div>/',
        '/<\/div>/',
        '/<a>/',
        '/<\/a>/',
        '/    /',
        '/        /'
    ), array(
        '<span class="div_tag">&lt;div&gt;</span>',
        '<span class="div_tag">&lt;/div&gt;</span>',
        '<span class="a_tag">&lt;a&gt;</span>',
        '<span class="a_tag">&lt;/a&gt;</span>',
        '&nbsp;&nbsp;&nbsp;&nbsp;',
        '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
    ), $line) . '<br />';
}
?>
</body>

出于测试目的,content.php文件如下所示:

<div>
    <div>
        <a>Source</a>
    </div>
</div>

现在,首先要解决的问题是,最重要的是,我想知道是否有一种方法可以处理制表符,因为我必须逐字输入4个空格而不是制表符,以使其看起来像是一行中的制表符,经典制表符没有被正确解析,它就消失了,在这种情况下没有制表符或空格是很成问题的。

我遇到的第二个问题是html标记,在这个基本示例中它可以正常工作,但是如果我做类似的事情<img src="sth" />甚至<a href="sth">sth</a>明显中断,我认为应该在regex中进行更准确的编码,但是由于我刚刚开始学习正则表达式,所以我不这样做知道如何处理。

现在,我只是准备<div><a>,但如果我知道如何使它更addaptable我将包括更喜欢<img><span><h1,2,3+><p>等等。

亚历山大·MP

用正则表达式解析HTML是不正确的。您将不得不考虑很多情况,而PHP的regex引擎提供了对递归模式的支持,但是,对于HTML来说,这是一个滑坡。解释html属性的最简单情况是,开始标记或自动关闭标记的这种模式:

'/<(\w)+.*?\/?>/'

类似的方法也可以用于结束标签:

'/<\/(\w)+>/'

但是,在以下情况下,此操作将失败:

  • 属性值中有一个“>”符号(尤其是在javascript事件处理程序的情况下)
  • 您也想解析内部HTML

如果要解析html标记的内部html,直到看到其自己的结束标记,则需要使用递归模式。您可以使用对标签名称(\ w)的引用来查找结束标签。但这是地狱。即便如此,在将如此多的语言与HTML一起输出的情况下,有时即使具有最富有弹性的regex风格和最佳模式,您也将无法正确解析HTML。

但是,对于突出显示简单的HTML,上述操作即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

忽略HTML标签以突出显示匹配的单词

来自分类Dev

HTML悬停时突出显示标签

来自分类Dev

如何突出显示html标签内的单词而不突出显示vue中的标签

来自分类Dev

Sublime 3 PHP / HTML语法突出显示

来自分类Dev

以HTML显示PHP代码的内容

来自分类Dev

如何在Emacs中突出显示不匹配的HTML标签?

来自分类Dev

修改HTML标签的Sublime文本语法突出显示

来自分类Dev

HTML-SELECT标签的OPTION部分突出显示文本

来自分类Dev

修改HTML标签的Sublime文本语法突出显示

来自分类Dev

HTML-SELECT标签的OPTION部分突出显示文本

来自分类Dev

PHP提取html标签和内容

来自分类Dev

使用PHP获取HTML标签内容

来自分类Dev

在html内容中显示html标签,在html中显示html代码段

来自分类Dev

如何订购显示html和php的内容

来自分类Dev

在PHP之前先加载并显示HTML

来自分类Dev

如何突出显示内容中的所有关键字而不是通过单击突出显示?JSP HTML Javascript

来自分类Dev

jQuery / Javascript-突出显示文本并在周围包装标签,而无需更改html结构

来自分类Dev

借助Elasticsearch,我可以针对不同的匹配标记用不同的HTML标签突出显示吗?

来自分类Dev

JS显示HTML标签

来自分类Dev

CropViewHelper 显示 HTML 标签

来自分类Dev

Angular JS:检测ng-bind-html是否完成加载,然后突出显示代码语法

来自分类Dev

HTML显示隐藏内容

来自分类Dev

WebVR 显示 html 内容

来自分类Dev

vaadin标签中的HTML内容

来自分类Dev

从标签页获取HTML内容

来自分类Dev

根据内容删除HTML标签

来自分类Dev

按内容删除HTML标签

来自分类Dev

获取html标签之间的内容

来自分类Dev

从文件html加载脚本标签

Related 相关文章

热门标签

归档