Php仅将引号转换为html代码,而不转换为其他特殊字符

Php仅将引号转换为html代码,而不转换为其他特殊字符,php,html,quotes,Php,Html,Quotes,所以我的mysql中有 'UAB“Litofcų;kontora” 当我试着像这样把它输入 由于引号的缘故,它不会显示全部内容。如何使只有引号的内容替换为html代码? 尝试了htmlspecialchars和htmlspecialchars,但它转换了ų到,但我需要它不隐蔽的方式。在输出输入值之前,您必须(仅)将所有“替换为”。例如: $sInputValue=str_replace(“,”,$sValueFromDb); 回声'; 另请参见和。您的问题似乎是数据已编码为HT

所以我的mysql中有
'UAB“Litofcų;kontora”

当我试着像这样把它输入

由于引号的缘故,它不会显示全部内容。如何使只有引号的内容替换为html代码? 尝试了htmlspecialchars和htmlspecialchars,但它转换了
ų到,但我需要它不隐蔽的方式。

在输出输入值之前,您必须(仅)将所有
替换为
。例如:

$sInputValue=str_replace(“,”,$sValueFromDb);
回声';

另请参见和。

您的问题似乎是数据已编码为HTML,但仅用作文本节点

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

preg\u replace\u callback
code from,因为
html\u entity\u decode
似乎不支持数字实体

$input = 'UAB "Litofcų 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;

@佩卡:我从来没有说过(并分析过)htmlspecialchars()有问题(我说的是“例如”)。有几种方法可以解决这个问题。@user1487699:您看过我的示例并尝试过我的解决方案吗?@scissor-这就是为什么字符串首先从HTML解码为文本…除了它似乎工作不正常之外…它显示代码中的字母ų,只有我想正常看到它。WTF?根据文档页面中的注释,html_entity_decode仅对命名实体进行操作。每次我学习PHP的新知识,我都会更加讨厌它。
$input = 'UAB "Litofcų 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;