8

以下是我需要从中删除<p>标签的文本

<p> Addiction, stress and subjective wellbeing</p> 
<p> The need and significance of traditional shop lot pavements in the context of town conservation in Malaysia</p> 
<p> The role of wage and benefit in engaging employee commitment</p>

我试过这个

$title= preg_replace('#<p>(.*?)</p>#', '', $title['result']);**

但仍然在获取<p>标签,有什么想法吗?

4

7 回答 7

21

您必须使用此正则表达式来捕获<p>标记及其所有内容:

'/<p\b[^>]*>(.*?)<\/p>/i'

捕获和删除<p>标签及其所有内容的工作示例:

$title = "<div>Text to keep<p class='classExample'>Text to remove</p></div>";
$result = preg_replace('/<p\b[^>]*>(.*?)<\/p>/i', '', $title);
echo $result;

请在键盘上查看现场演示

如果您想使用正则表达式来解析 HTML - 那么您将无法做到这一点。

在此处阅读有关您的问题的更多信息:您如何在 PHP 中解析和处理 HTML/XML?

于 2012-08-26T14:36:50.970 回答
6

只是为了删除 p 标签,你可以这样做

$text=str_ireplace('<p>','',$text);
$text=str_ireplace('</p>','',$text);    
于 2012-08-26T14:40:13.873 回答
6

尝试:

如果您只想删除<p>标签

$html = "
<p> Addiction, stress and subjective wellbeing</p> 
<p> The need and significance of traditional shop lot pavements town</p> 
<p> The role of wage and benefit in engaging employee commitment</p>
";

echo strip_tags($html);

如果要删除<p>标签及其content

$html = preg_replace('#\<p>[{\w},\s\d"]+\</p>#', "", $html);
于 2014-06-19T08:43:36.830 回答
3
echo "<div id=\"main_content\">" . strip_tags($row[main_content]) . "</div>";
于 2013-12-12T18:36:36.020 回答
2

如果您只需要剥离所有标记,请使用strip_tags()

于 2012-08-26T14:39:31.440 回答
2
$text = '<p>Test paragraph.</p> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow p and a tag
echo strip_tags($text, '<p><a>');
于 2018-04-10T13:43:26.420 回答
0

此代码删除一个 p-tag:

function parse($html) {
    $dom = new DOMDocument();
    @$dom->loadHTML($html);
    $ps = $dom->getElementsByTagName('p');
    //die('<pre>'.print_r($ps,1).'</pre>');
    if ($ps->length === 1){
        $p = $ps->item(0);
        return $p->nodeValue;
    } else {
        return '';
    }
}
于 2020-04-28T13:13:51.247 回答