【发布时间】:2012-01-10 12:26:41
【问题描述】:
我正在用 PHP 编写自己的博客,我希望能够在 Markdown 中写帖子以 HTML 显示结果,我还需要用 HTML 做一些自定义的事情。
有一个简单的脚本可以将 Markdown 转换为 HTML,但是一旦完成,我需要对 HTML 做一些事情:
我需要使用 htmlentities() 函数替换 pre 标记内的所有 HTML 符号。 (在我的博客中,我发布了包含 HTML 在内的代码,我只想显示这个 HTML,而不是在浏览器中解析它)。
-
我需要提取所有纯文本,以便在结尾处创建不包含图像标签或半标签(或 pre 中的代码片段)的摘录。
我认为使用以下代码可以解决问题 2:
$xml = new SimpleXMLElement('<xml>' . $html . '</xml>');
$xml 现在看起来像:
<xml>
<p>some random text</p>
<img src='image.jpg'>
<p>some random text</p>
</xml>
这会提取所有文本:
foreach($xml->{'p'} as $p){
echo $p . '<hr>';
}
这可行,但是我也希望它包含在 ul 和 ol 中找到的所有文本(与它们在 XML 中出现的顺序相同。我已经搜索了一种方法来遍历 $xml 的所有子级,但我找不到如何检查元素是 p、ul 还是 ol。
而且我找不到解决问题 1 的方法,因为我不知道如何替换 XML 对象中的内容,但保持其他所有内容不变。 (或者我是否遗漏了一些非常明显的东西?)
【问题讨论】:
-
还有更多其他问题和答案也涵盖了这一点。我建议你使用搜索。
标签: php xml parsing text replace