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

问题描述 投票:1回答:1

我使用以下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伪选择器::第一个字母,我有不同的理由在这种情况下不使用它。

php regex wordpress preg-replace preg-match
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.