我正在尝试解析表示源代码的字符串,如下所示:
[code lang="html"]
<div>stuff</div>
[/code]
<div>stuff</div>
正如你从我之前的 20 个问题中看到的,我尝试使用 PHP 的正则表达式函数来做到这一点,但是遇到了很多问题,特别是当字符串非常大时......
你们知道我可以用 PHP 编写的 BB 解析器类来代替正则表达式吗?
我需要它做的是:
- 能够从内部转换所有内容
[code]
带有 html 实体的标签
- 能够仅对外部内容运行某种过滤器(我的回调函数)
[code]
tags
谢谢
edit:
我最终使用了这个:
-
全部转换<pre>
and <code>
[pre] 和 [code] 的标签:
str_replace(array('<pre>', '</pre>', '<code>', '</code>'), array('[pre]', '[/pre]', '[code]', '[/code]'), $content);
-
获取[code]..[/code]和[pre]...[/pre]之间的内容并进行html实体转换
preg_replace_callback('/(.?)\[(pre|code)\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)/s', 'self::specialchars', $content);
(我从 WordPress 短代码函数中窃取了这个模式:)
将实体转换后的内容存储在临时数组变量中,并替换其中的内容$content
具有唯一的ID
我现在可以安全地运行我的过滤器$content
,因为其中没有代码,只有 ID(此过滤器对整个文本执行 strip_tags 并转换诸如http://blabla.com
到链接)
替换其中的唯一 ID$content
使用数组变量中转换后的代码块
你觉得可以吗?
HTML 净化器http://htmlpurifier.org/ http://htmlpurifier.org/
但您面临着与之前 20 个问题相同的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)