Удалить весь текст в определенных тегах - PullRequest
0 голосов
/ 14 января 2011

Мне интересно удалить весь текст в следующих тегах:

<p class="wp-caption-text">Remove this text</p>

Кто-нибудь может дать мне представление о том, как это можно сделать в php?

Большое спасибо

Ответы [ 4 ]

3 голосов
/ 14 января 2011

Избавьтесь от тега и содержимого внутри него:

 $content = preg_replace('/<p\sclass=\"wp\-caption\-text\">[^<]+<\/p>/i', '', $content);

или, если вы хотите сохранить теги:

 $content = preg_replace('/(<p\sclass=\"wp\-caption\-text\">)[^<]+(<\/p>)/i', '$1$2', $content);
2 голосов
/ 14 января 2011

Как альтернатива регулярным выражениям более высокого уровня.

Вы можете обрабатывать с DOM. Вы можете сопоставить все искомые узлы с XPath //p[@class="wp-caption-text"].

Например:

$doc = new DOMDocument();
$doc->loadHTML($yourHTMLasString);
$xpath = new DOMXPath($doc);
$query = '//p[@class="wp-caption-text"]';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
    $entry->textContent = '';
}
echo $doc->saveHTML();
1 голос
/ 14 января 2011

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

$string = '<p class="wp-caption-text">Remove this text</p>'; 
$pattern = '/(.*<p .*>).*(<\/p>.*)/'; 
$replacement = '$1$2'; 
echo preg_replace($pattern, $replacement, $string); 
0 голосов
/ 14 января 2011

если это всегда один и тот же тег, вы можете просто выполнить поиск строки. использовать позицию, полученную для подстроки из нее в закрывающий тег. Или вы можете использовать регулярные выражения, здесь есть хорошие, которые могут вам помочь.

...