Regex: игнорировать теги HTML с preg_replace_callback

Я пытаюсь захватить весь текст между 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>

person Abdullah Raid    schedule 04.08.2011    source источник
comment
возможный дубликат preg_match самый простой способ сопоставить текст из внутри HTML-тегов   -  person hakre    schedule 04.08.2011


Ответы (1)


person    schedule
comment
хороший код, но проблема в том (его не игнорировать. Его удалить).. мой шаблон (\(\s*\')(<.+?>)*\s*(.*?)\s*(\') и функция: return $matches[1].$matches[2].strtolower($matches[3]).$matches[4]; - person Abdullah Raid; 04.08.2011
comment
@programmer4me мой код ничего не удаляет, делает именно то, что вы хотите, я проверял. - person nobody; 04.08.2011
comment
хорошо, я пытаюсь заставить это работать, но проблема в том, что я использую этот код. $code = preg_replace_callback('/(\(\')(<.+?>)*(.*?)(<.+?>)*(\')/', function($matches){ var_dump($matches); }, $code); этот код не работает, совпадения не отображают теги html .. совпадения[2] пусты .. в чем проблема ?? Благодарность - person Abdullah Raid; 04.08.2011