0

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

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

谁能给我一个关于如何在 php 中完成的想法?

非常感谢你

4

4 回答 4

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);
于 2011-01-14T15:28:56.863 回答
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();
于 2011-01-14T15:49:23.507 回答
1

试试这个:

$string = '<p class="wp-caption-text">Remove this text</p>'; 
$pattern = '/(.*<p .*>).*(<\/p>.*)/'; 
$replacement = '$1$2'; 
echo preg_replace($pattern, $replacement, $string); 
于 2011-01-14T15:29:06.500 回答
0

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

于 2011-01-14T15:27:20.653 回答