我有一个奇怪的场景,我不能从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| ?)*</p>#'";
iconv(mb_detect_encoding($html, "auto"), 'UTF-8', $html);
return preg_replace($pattern, '', $html);
}
答案 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());
}