删除特定标记内的所有文本

时间:2011-01-14 15:23:51

标签: php replace preg-replace strip

我很有兴趣删除以下标签中的所有文字:

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

有人能告诉我如何在php中完成这项工作吗?

非常感谢

4 个答案:

答案 0 :(得分:3)

删除其中的标记和内容:

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

或者如果你想保留标签:

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

答案 1 :(得分:2)

作为正则表达式的高级替代。

您可以使用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();

答案 2 :(得分:1)

试试这个:

$string = '<p class="wp-caption-text">Remove this text</p>'; 
$pattern = '/(.*<p .*>).*(<\/p>.*)/'; 
$replacement = '$1$2'; 
echo preg_replace($pattern, $replacement, $string); 

答案 3 :(得分:0)

如果它总是相同的标签你可以简单地搜索字符串。使用从它生成子串的位置到结束标记。 或者你可以使用正则表达式,这里有很好的帖子可以帮助你。