Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP处理特殊符号(即&x2122;而不是&xE2;&x201E;&xA2;)_Php - Fatal编程技术网

使用PHP处理特殊符号(即&x2122;而不是&xE2;&x201E;&xA2;)

使用PHP处理特殊符号(即&x2122;而不是&xE2;&x201E;&xA2;),php,Php,我试图阅读一个XML文档,其中包含™(™), 但出于某种原因,无论我尝试什么,它总是显示为–x 例如: $xml = new SimpleXMLElement('<item><title>test</title></item><item><title>&#x2122;</title></item>'); foreach ($xml->item AS $item) {

我试图阅读一个XML文档,其中包含
(™), 但出于某种原因,无论我尝试什么,它总是显示为–x

例如:

$xml = new SimpleXMLElement('<item><title>test</title></item><item><title>&#x2122;</title></item>');
foreach ($xml->item AS $item)
{
    echo $item->title . "<br />";
}

Results in:
test
â„¢
$xml=newsimplexmlement('test™;');
foreach($xml->item AS$item)
{
echo$item->title.“
”; } 结果: 测验 â„¢
为了清楚起见,我不希望它只是适当地显示,我需要将它插入到数据库中


谢谢!

如果php正确地从XML文件中获取它,并且问题是将它输出到您的数据库中,请使用,它会将所有符号转换为它们的html等价物。符号将存储为“™", 当您从数据库中检索时,可以很好地处理它。

您原始帖子中的代码对我来说很好,至少如果我添加了
标记。请确保HTML页面的内容编码设置正确,即发送HTTP头
内容类型:text/HTML;charset=UTF-8
或在
中设置此项。当插入时将包含此符号的字符串输入数据库,首先使用集名称UTF8将字符集设置为UTF-8。当然,插入的数据库/表/字段也应设置为UTF8。

尝试使用UTF8解码或UTF8编码php函数。它们应将其转换为正确的字符

echo utf8_decode($this->title);
在将整个字符串加载到simplexmlelement之前,请在整个字符串上运行htmlentities()。这将转换PHP识别为html实体的任何内容(例如,&,€)。这将允许您将它们存储在数据库中,而无需使用所有mb*函数以及数据库中UTF8支持所需的所有其他环


如果您有任何真正特殊的字符不能以这种方式编码,这将不起作用。

您到底尝试了什么?:)htmlspecialchars似乎不起作用。当我回显文本时,它显示为–x,这是我唯一能让它显示(且仅显示)的方法正确的方法是发送内容类型utf-8头。嗯,php可能无法正确读取XML文件。您可以发布您正在使用的代码吗?您需要使用“htmlspecialchars”而不是htmlspecialchars。这应该也可以,但在当今时代,为utf-8合规性设计可能是个好主意:)内容编码没有实际上,与此问题有关,因为插入到DB中的值已损坏(这不是数据库问题,如果我尝试手动插入符号,效果很好),因此,我猜解析器读取XML的方式有问题。然后,您必须向我们展示用于将XML插入数据库的代码,因为您上面展示的代码非常适合我:)