我正在编写一个为用户提供 tinymce HTML 编辑器的应用程序。我面临的问题是,尽管我经常要求我的用户使用“标题 2”(h2) 样式来格式化他们的标题,但他们要么使用 h1(我可以处理!),要么使用新段落, 然后将内容的段落加粗。
即
<p><strong>This is a header</strong></p>
<p>Content content blah blah blah.</p>
我想做的是找到 <p><strong>
的所有实例说的少于八个单词并用 h2 替换它们。
执行此操作的最佳方法是什么?
更新:感谢 Jack 的代码,我开发了一个简单的模块,它可以完成我在这里描述的所有内容以及更多内容。 The code is here on GitHub .
最佳答案
您可以使用 DOMDocument
为了这。找到 <strong>
<p>
的子标签, 计算字数并用 <h2
替换 node 和 parent >:
$content = <<<'EOM'
<p><strong>This is a header</strong></p>
<p>Content content blah blah blah.</p>
EOM;
$doc = new DOMDocument;
$doc->loadHTML($content);
$xp = new DOMXPath($doc);
foreach ($xp->query('//p/strong') as $node) {
$parent = $node->parentNode;
if ($parent->textContent == $node->textContent &&
str_word_count($node->textContent) <= 8) {
$header = $doc->createElement('h2', $node->textContent);
$parent->parentNode->replaceChild($header, $parent);
}
}
echo $doc->saveHTML();
关于php - 根据内容长度用 PHP 更改标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16050922/