php - 替换不属于 HTML 标记的任意字符
问题描述
我正在开发一个简单的文本解析器来解析某些标记命令。这些命令之一是将突出显示应用于 PHP 字符串。我使用 highlight_string() 函数来做到这一点。
由于我的解析器的工作方式,命令被连续解析,突出显示是首先解析的内容之一,但这带来了一个问题:我不想再对突出显示的字符串应用标记。我对其他命令执行此操作的方式是简单地转义作为任何命令的一部分的字符,但我不能在这里这样做,因为它也会转义已经生成的 HTML 中的某些字符(例如,“/”,将是逃脱)。
基本上,我的问题是:“如何从包含 HTML 的字符串中转义某些字符(不是“<”或“>”),而不转义属于 HTML 本身的任何字符?”。
我已经尝试过使用 PHP 内置的 XML 解析器,但这会导致错误:
PHP Warning: simplexml_load_string(): Entity: line 2: parser error : Entity 'nbsp' not defined
解决方案
最好举一个例子,你想解析的文件是什么样子的。无论如何,我会说您可以使用布尔值作为标志来指示您是使用 HTML 代码还是 PHP 代码。
如果某处有一个 an<?php
而你没有找到 a?>
那么你在 PHP-Code 中并且你的标志可以被命名为isPHP将是true
,否则它将是false
.
如果您的文本包含您的 PHP 代码在某处包含有效 HTML 代码的字符串的边缘情况,那么您最好使用一堆布尔值作为标志。
推荐阅读
- node.js - 循环请求时出错 [ERR_HTTP_HEADERS_SENT]
- javascript - 什么是 `fs.readFileSync` 但在浏览器中的等价物?
- bash - 带模式的循环环境,并输出自定义结果
- r - R 中的随机森林 - 19 个预测变量,1 个因变量
- python - cls vs. self vs. python中的类调用
- java - 复制静态方法的参数
- python - 代码中的错误是什么:“value %s 不是 int”% `value`
- java - 类型不匹配:无法从 Son 转换为 Super
- python - len(list) 因超出索引而返回的问题
- javascript - 仅当数据可用时,vuejs 中的另一个元素或父元素的条件渲染