Regex: игнорировать теги HTML с preg_replace_callback - PullRequest
1 голос
/ 04 августа 2011

Я пытаюсь перехватить весь текст между тегами HTML (если есть) и поставить на него функцию .. я имею в виду .. мой код сейчас

$code = preg_replace_callback('/(\(\s*\')\s*(.*?)\s*(\')/',
        function($matches) {
            return strtolower($matches);
        }, $code);

Теперь я хочу:

  1. Если есть теги HTML === Возвращать теги HTML + strtolower (для текста между тегами).

  2. Если тегов HTML нет === Вернуть strtolower (весь текст)


пример: если у нас есть:

('TEST HERE this is a TEXT')

возврат

('test here this is a text')

но с HTML-тегами типа

<DIV CLASS='tesT'>This IS A TEXT</DIV><Div class='Test1'>THIS is another TEXT</DIV>

Возвращение

<DIV CLASS='tesT'>this is a text</DIV><Div class='Test1'>this is another text</DIV>

1 Ответ

0 голосов
/ 04 августа 2011
$str = preg_replace_callback( '/(<.+?>)*(.*?)/s', 'replace', $str );

function replace( $matches ) {
    return $matches[1].strtolower( $matches[2] );
}
...