@Pseudoquater

Как заменить текст с помощью регулярного выражения в определенных тегах?

Имеем исходный код:

<a href="/public/pablication.html">public</a>
    <p>В абзаце присутствует слово public, которое нам и надо заменить. В других местах кода слово public менять не надо</p>
    <p>Вопрос - как это сделать, чтобы на выходе получить, например код ниже:</p>


--------------------------------
Как заменить слово public на dolbi ТОЛЬКО в коде абзаца, не затрагивая код гиперссылки, чтобы получился код, указанный ниже?
--------------------------------

<a href="/public/pablication.html">public</a>
    <p>В абзаце присутствует слово dolbi, которое нам и надо заменить. В других местах кода слово dolbi менять не надо</p>
    <p>Вопрос - как это сделать, чтобы на выходе получить, например код ниже:</p>
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dodo512
$str = preg_replace_callback(
    '#(<p[^>]*>)(.*?)(</p>)#si',
    function ($m) {
        return $m[1].str_replace('public', 'dolbi', $m[2]).$m[3];
    },
    $str
);

Или
$str = preg_replace(
    '#(?i:</p>|^).*?(?i:<p[^>]*>|$)(*SKIP)(*F)|<[^>]+>(*SKIP)(*F)|public#s', 
    'dolbi',
    $str
);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы