我想只允许段落和列表。
实际上我想使用输入以Open Document格式创建文档。所以我用ODF中的正确标记替换标记<p>
。但首先,我正在尝试学习如何将降价格式转换为我可以使用的格式。
我可以使用MarkdownPHP的输出并将html中的标签替换为ODF标签,但是我只想使用段落和列表。 Markdown产生的远远超过我的需要。如果我错过任何html标记,ODF文档将会中断,因为它不了解html标记。
我相信可以使用简单的RegExp。但我不知道怎么做!
示例:
My first line.
* My first item.
* My second item.
More text...
输出:
<p>My first line.</p>
<ul>
<li>My first item.</li>
<li>My second item.</li>
</ul>
<p>More text...</p>
答案 0 :(得分:1)
您可以使用strip_tags()
function删除所需标记以外的所有标记。它们的内容将保留,但标签本身将被删除。
试试这个:
$output = strip_tags($output, "<p><ul><ol><li>");
从那里,你可以使用str_replace()
将剩余的标签更改为他们的ODF对应物。 (如果Markdown解析器中的标记格式不一致,那么您可以使用preg_replace()
来处理差异,具体取决于具体的输出。)
答案 1 :(得分:0)
根据 AgentConundrum 的答案,我可以解决问题。 但我需要运行解析器2次,因为在第一次之后我将没有包裹块。
$output = Markdown($output);
$output = strip_tags($output, '<p><ul><ol><li>');
$output = Markdown($output);
$output = strip_tags($output, '<p><ul><ol><li>');
示例:
This is an H1
=============
Paragraph here...
* List item.
之后:
$output = Markdown($output);
$output = strip_tags($output, '<p><ul><ol><li>');
echo $output;
我会这样:(注意h1标题)
This is an H1
<p>Paragraph here...</p>
<ul>
<li>List item.</li>
</ul>
所以,我再次解析输出:
<p>This is an H1</p>
<p>Paragraph here...</p>
<ul>
<li>List item.</li>
</ul>