不能使用PHP </p>从字符串中删除<p> html标签

时间:2013-02-13 12:06:53

标签: php

我有一个奇怪的场景,我不能从PHP中的字符串中删除

标签。

发生了什么,我正在使用编码ASCII

从数据库中提取数据

字符串看起来像这样

&lt;p&gt;Blue Power Waterproof&lt;/p&gt; 

现在我执行以下操作来解码实体

html_entity_decode($p->description)

以下结果<p>Blue Power Waterproof</p>我需要删除

标签,但以下内容无效

strip_tags(html_entity_decode($p->description))

removeParagraphTags(html_entity_decode($p->description);

function removeParagraphTags($html){ 
            $pattern = "'#<p[^>]*>(\s|&nbsp;?)*</p>#'"; 
            iconv(mb_detect_encoding($html, "auto"), 'UTF-8', $html);
            return preg_replace($pattern, '', $html); 
        }

2 个答案:

答案 0 :(得分:1)

请看一下这个链接。它非常有效,你可以在这里看到工作example

答案 1 :(得分:0)

我通过从数据库获取与HTML实体一起存储的所有描述,解码实体以便将实体转换为html,然后使用html而不是实体更新每个记录来解决此问题,这解决了问题

$sql = "SELECT * FROM products";
$result=  pg_query($conn,$sql);
while ($row = pg_fetch_array($result,null,PGSQL_ASSOC)) {
    $name = html_entity_decode($row['name']);
    $name = iconv('UTF-8', 'ASCII', $name);
    $desc = html_entity_decode($row['description']);
    $desc = iconv('UTF-8', 'ASCII', $desc);
    $ldesc = html_entity_decode($row['longDescription']);
    $ldesc = iconv('UTF-8', 'ASCII', $ldesc);
    $up = "UPDATE products SET name='".pg_escape_string($name)."',description='".  pg_escape_string($desc)."',\"longDescription\"='".pg_escape_string($ldesc)."' WHERE p_id=".$row['p_id'];

    pg_query($conn,$up) OR die(pg_last_error());
}