php - 根据内容长度用 PHP 更改标签

标签 php html tinymce htmlpurifier

我正在编写一个为用户提供 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/

相关文章:

javascript - 内容未使用 javascript 加载到 div 中

javascript - a.nativeSelection 为 null TinyMCE 编辑器

php - HTACCESS 重写不适用于非 WP 目录

php - 部署者 : Deploy from local machine without repository

javascript - after() 在注入(inject)的 HTML 周围包含引号

html - 如何使用 css 创建像这张图片这样的 div

tinymce - 如何在 iOS Safari 中为 TinyMCE 设置固定高度?

tinymce - 在 Handlebars 模板中使用 TinyMCE

php - 检测 PHP 应用程序中的硬编码标签文本

php - php-excel-reader是否支持xlsx