Измените preg_replace, чтобы добавить span как к первой букве, так и к первому слову - PullRequest
0 голосов
/ 25 апреля 2018

Я использую следующий код 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 голосов
/ 25 апреля 2018

попробуйте это:

$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);
...