首页 > 解决方案 > 替换不属于 HTML 标记的任意字符

问题描述

我正在开发一个简单的文本解析器来解析某些标记命令。这些命令之一是将突出显示应用于 PHP 字符串。我使用 highlight_string() 函数来做到这一点。

由于我的解析器的工作方式,命令被连续解析,突出显示是首先解析的内容之一,但这带来了一个问题:我不想再对突出显示的字符串应用标记。我对其他命令执行此操作的方式是简单地转义作为任何命令的一部分的字符,但我不能在这里这样做,因为它也会转义已经生成的 HTML 中的某些字符(例如,“/”,将是逃脱)。

基本上,我的问题是:“如何从包含 HTML 的字符串中转义某些字符(不是“<”或“>”),而不转义属于 HTML 本身的任何字符?”。

我已经尝试过使用 PHP 内置的 XML 解析器,但这会导致错误:

PHP Warning:  simplexml_load_string(): Entity: line 2: parser error : Entity 'nbsp' not defined

标签: phpparsing

解决方案


最好举一个例子,你想解析的文件是什么样子的。无论如何,我会说您可以使用布尔值作为标志来指示您是使用 HTML 代码还是 PHP 代码。

如果某处有一个 an<?php而你没有找到 a?>那么你在 PHP-Code 中并且你的标志可以被命名为isPHP将是true,否则它将是false.

如果您的文本包含您的 PHP 代码在某处包含有效 HTML 代码的字符串的边缘情况,那么您最好使用一堆布尔值作为标志。


推荐阅读