修改preg_replace以将span添加到第一个字母和第一个单词

时间:2018-04-25 11:55:16

标签: php regex wordpress preg-replace preg-match

我正在使用以下preg_replace代码在段落的第一个字母周围添加-Tag(在Wordpress中):

<?php
    ob_start();
    the_content();
    $content = ob_get_clean();
    $content = preg_replace('@<p>\s*((?:<[^<>]+>\s*)*)([^<>\s])@', '<p>$1<span class="pst-Dropcap">$2</span>', $content, 1);

    echo $content;
?>

这导致类似于此的内容:

<p><span class="pst-Dropcap">H</span>ello world.</p>

我想扩展此代码,以便使用不同的标记覆盖其余部分:

<p><span class="pst-Dropcap">H</span><span class="pst-First_Word">ello</span> world.</p>

如何实现这一目标?

我知道CSS伪选择器::第一个字母,在这种情况下,我有不同的理由不使用它。

1 个答案:

答案 0 :(得分:0)

试试这个:

$content = preg_replace('@<p>\s*((?:<[^<>]+>\s*)*)([^<>\s])([^<>\s]*)@', '<p>$1<span class="pst-Dropcap">$2</span><span class="pst-First_Word">$3</span>', $content, 1);