0

私は奇妙なシナリオを持っています、私はただ得ることができません

PHPの文字列から削除されたタグ。

これが何が起こるかです、私はASCIIをエンコードしてデータベースからデータを引き出しています

文字列は次のようになります

<p>Blue Power Waterproof</p> 

今、私はエンティティをデコードするために次のことをします

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); 
        }
4

1 に答える 1

1

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());
}
于 2013-02-19T12:07:06.937 に答える