Php仅转换为html代码,但不转换为其他特殊字符

时间:2012-07-23 07:53:58

标签: php html quotes

所以我有我的mysql 'UAB "Litofcų kontora"'

当我尝试把它放在这样的输入中

<input type="text" value="UAB "Litofc&#371; kontora"">它没有显示整个内容因为引号如何只用引号代替html代码? 尝试了htmlentities和htmlspecialchars,但它将&#371;转换为但我需要这样才能成为它不会隐蔽的方式。

2 个答案:

答案 0 :(得分:0)

在输出输入值之前,您(仅)将所有"替换为&quot;。鸡蛋str_replace

$sInputValue = str_replace('"', '&quot;', $sValueFromDb);
echo '<input type="text" value="' . $sInputValue . '">';

另见this php exmaplethe resulting html example

答案 1 :(得分:0)

看起来您的问题是数据已针对HTML进行编码,但仅用作文本节点。

因此,解决方案是将其从HTML转换为文本,然后将其转换回HTML - 但是以适合放入属性的方式。

来自this comment in the PHP manual

preg_replace_callback代码,因为html_entity_decode似乎不支持数字实体。

$input = 'UAB "Litofc&#371; kontora"';
$attribute_safe = htmlspecialchars(
        html_entity_decode(
            preg_replace_callback(
                "/(&#[0-9]+;)/",
                function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); },
                $input
            )
        )
);
echo $attribute_safe;