想了解错误:“输入的UTF-8输入不正确,表示编码!”使用PHP的simplexml_load_string的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于utf8towcs里输入的不对的相
想了解错误:“输入的UTF-8输入不正确,表示编码!” 使用PHP的simplexml_load_string的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于utf8towcs里输入的不对的相关问题,此外,我们还将为您介绍关于PHP simplexml_load_string() 函数、php simplexml_load_string() 函数把 XML 字符串载入对象中、PHP simplexml_load_string()函数实例讲解、php – Simplexml_load_string($string)返回一个空对象,但$string包含xml?代码如下的新知识。
本文目录一览:- 错误:“输入的UTF-8输入不正确,表示编码!” 使用PHP的simplexml_load_string(utf8towcs里输入的不对)
- PHP simplexml_load_string() 函数
- php simplexml_load_string() 函数把 XML 字符串载入对象中
- PHP simplexml_load_string()函数实例讲解
- php – Simplexml_load_string($string)返回一个空对象,但$string包含xml?代码如下
错误:“输入的UTF-8输入不正确,表示编码!” 使用PHP的simplexml_load_string(utf8towcs里输入的不对)
如何解决错误:“输入的UTF-8输入不正确,表示编码!” 使用PHP的simplexml_load_string?
您的0xED 0x6E 0x2C 0x20字节对应于ISO-8859-1中的“ín”,因此您的内容似乎在ISO-8859-1中,而不是UTF-8。告诉您的数据提供商并请他们修复它,因为如果它对您不起作用,那么对其他人也可能不起作用。
现在有几种解决方法,只有
时才应使用。其中之一将是使用utf8_encode()
。不利之处在于,如果该XML同时包含有效的UTF-8和某些ISO-8859-1,则结果将包含mojibake。或者,您可以尝试使用iconv()
或mbstring
将字符串从UTF-8转换为UTF-8 ,希望他们会为您解决。(它们不会,但是您至少可以忽略无效字符,以便可以加载XML)
或者,您可以走很长的路,自己验证/修复序列。这将需要一段时间,具体取决于您对UTF-8的熟悉程度。也许有图书馆可以做到这一点,尽管我什么都不知道。
无论哪种方式,都请通知数据提供者他们正在发送无效数据,以便他们可以对其进行修复。
这是部分修复。它绝对不会修复所有问题,但会修复其中的一些问题。希望您能满意为止,直到您的提供者修复他们的东西为止。
function fix_latin1_mangled_with_utf8_maybe_hopefully_most_of_the_time($str)
{
return preg_replace_callback(''#[\\xA1-\\xFF](?![\\x80-\\xBF]{2,})#'', ''utf8_encode_callback'', $str);
}
function utf8_encode_callback($m)
{
return utf8_encode($m[0]);
}
解决方法
我收到错误消息:
parser error : Input is not proper UTF-8,indicate encoding ! Bytes: 0xED
0x6E 0x2C 0x20
尝试使用simplexml_load_string
第三方来源处理XML响应时。原始XML响应确实声明了内容类型:
<?xml version="1.0" encoding="UTF-8"?>
但是,似乎XML并不是真正的UTF-8。XML内容的语言是西班牙语,并且包含类似Dublín
XML的单词。
我无法让第三方来整理他们的XML。
如何预处理XML并解决编码不兼容的问题?
有没有一种方法可以检测XML文件的正确编码?
PHP simplexml_load_string() 函数
实例
转换形式良好的 XML 字符串为 SimpleXMLElement 对象,然后输出对象的键和元素:
<?PHP$note=<<<XML
<note>高佣联盟 www.cgewang.com
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XML;
$xml=simplexml_load_string($note);
print_r($xml);
?>
定义和用法
simplexml_load_string() 函数转换形式良好的 XML 字符串为 SimpleXMLElement 对象。
语法
simplexml_load_string(data,classname,options,ns,is_prefix);参数 | 描述 |
---|---|
data | 必需。规定形式良好的 XML 字符串。 |
classname | 可选。规定新对象的 class。 |
options | 可选。规定附加的 Libxml 参数。通过指定选项为 1 或 0(TRUE 或 FALSE,例如 LIBXML_NOBLANKS(1))进行设置。
可能的值:
|
ns | 可选。规定命名空间前缀或 URI。 |
is_prefix | 可选。规定一个布尔值。如果 ns 是前缀则为 TRUE,如果 ns 是 URI 则为 FALSE。默认是 FALSE。 |
技术细节
返回值: | 如果成功则返回 SimpleXMLElement 对象,如果失败则返回 FALSE。 |
---|---|
PHP 版本: | 5+ |
更多实例
实例 1
输出 XML 字符串中每个元素的数据:
<?PHP$note=<<<XML
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XML;
$xml=simplexml_load_string($note);
echo $xml->to . "<br>";
echo $xml->from . "<br>";
echo $xml->heading . "<br>";
echo $xml->body;
?>
实例 2
输出 XML 字符串中每个子节点的元素名称和数据:
<?PHP$note=<<<XML
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XML;
$xml=simplexml_load_string($note);
echo $xml->getName() . "<br>";
foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child . "<br>";
}
?>
php simplexml_load_string() 函数把 XML 字符串载入对象中
simplexml_load_string()函数将格式良好的XML字符串转换为SimpleXMLElement对象。
语法
PHP的语法simplexml_load_string()函数具有以下语法。
simplexml_load_string(data,classname,options,ns,is_prefix);
参数
参数
是必须的
描述
数据
需要。
一个格式正确的XML字符串
班级名称
可选的。
新对象的类
选项
可选的。
额外的Libxml参数。通过指定选项和1或0(TRUE或FALSE,例如LIBXML_NOBLANKS(1))来设置
ns
可选的。
命名空间前缀或URI
is_prefix
可选的。
如果ns是前缀,则为TRUE。如果ns是URI,则为FALSE。默认值为FALSE
选项的可能值:
LIBXML_COMPACT - 激活节点分配优化(可加速应用程序)
LIBXML_DTDATTR - 设置默认DTD属性
LIBXML_DTDLOAD - 加载外部子集
LIBXML_DTDVALID - 使用DTD进行验证
LIBXML_NOBLANKS - 删除空白节点
LIBXML_NOCDATA - 将CDATA合并为文本节点
LIBXML_NOEMPTYTAG - 展开空标记(例如对
),仅在DOMDocument-> save()和DOMDocument-> saveXML()函数中可用
LIBXML_NOENT - 替代实体
LIBXML_NOERROR - 不显示错误报告
LIBXML_NONET - 加载文档时禁用网络访问
LIBXML_NowARNING - 不显示警告报告
LIBXML_NOXMLDECL - 保存文档时删除XML声明
LIBXML_NSCLEAN - 删除多余的命名空间声明
LIBXML_PARSEHUGE - 设置XML_PARSE_HUGE标志,放宽解析器的任何硬编码限制。这会影响极限,如文档的最大深度和文本节点大小的限制
LIBXML_XINCLUDE - 实现XInclude替换
LIBXML_ERR_ERROR - 获取可恢复的错误
LIBXML_ERR_FATAL - 获取致命错误
LIBXML_ERR_NONE - 获取无错误
LIBXML_ERR_WARNING - 获取简单的警告
LIBXML_VERSION - 获取libxml版本
LIBXML_DottED_VERSION - 获取点分的libxml版本
返回值
成功时返回SimpleXMLElement对象。失败时为FALSE。
实例1
将格式良好的XML字符串转换为SimpleXMLElement对象,然后输出该对象的键和元素:
XML;
$xml=simplexml_load_string($note);
print_r($xml);
?>
上面的代码生成以下结果。
SimpleXMLElement Object
(
[name] => Array
(
[0] => PHP
[1] => Java
)
)
实例2
输出XML字符串中每个元素的数据:
XML;
$xml=simplexml_load_string($note);
echo $xml->to . "n";
echo $xml->from . "n";
echo $xml->heading . "n";
echo $xml->body;
?>
实例3
在XML字符串中为每个子节点输出元素的名称和数据:
XML;
$xml=simplexml_load_string($note);
echo $xml->getName() . "n";
foreach($xml->children() as $child){
echo $child->getName() . ": " . $child . "n";
}
?>
上面的代码生成以下结果。
book
name: PHP
name: Java
PHP simplexml_load_string()函数实例讲解
PHP simplexml_load_string() 函数
实例
转换形式良好的 XML 字符串为 SimpleXMLElement 对象,然后输出对象的键和元素:
<?php $note=<<<XML <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don''t forget me this weekend!</body> </note> XML; $xml=simplexml_load_string($note); print_r($xml); ?>
定义和用法
simplexml_load_string()
函数转换形式良好的 XML 字符串为 SimpleXMLElement 对象。
语法
simplexml_load_string( _data,classname,options,ns,is_prefix_ );
实例 1
输出 XML 字符串中每个元素的数据:
<?php $note=<<<XML <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don''t forget me this weekend!</body> </note> XML; $xml=simplexml_load_string($note); echo $xml->to . "<br>"; echo $xml->from . "<br>"; echo $xml->heading . "<br>"; echo $xml->body; ?>
实例 2
输出 XML 字符串中每个子节点的元素名称和数据:
<?php $note=<<<XML <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don''t forget me this weekend!</body> </note> XML; $xml=simplexml_load_string($note); echo $xml->getName() . "<br>"; foreach($xml->children() as $child) { echo $child->getName() . ": " . $child . "<br>"; } ?>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
- PHP安装memcache扩展的步骤讲解
- PHP配置ZendOpcache插件加速
- PHP convert_uudecode()函数讲解
- PHP安装BCMath扩展的方法
- PHP convert_cyr_string()函数讲解
- PHP chunk_split()函数讲解
- PHP chr()函数讲解
- PHP chop()函数讲解
- PHP bin2hex()函数基础实例讲解
- PHP count_chars()函数讲解
php – Simplexml_load_string($string)返回一个空对象,但$string包含xml?代码如下
我使用xml格式的cURL检索一些信息.
....
$xml = curl_exec($ch);
$data = simplexml_load_string($xml);
print_r($data);
//out put - SimpleXMLElement Object ( )
如果我尝试 – print_r($xml);并查看页面源
我明白了
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns7:users xmlns="http://www.example.com/xml/ns/rs"
xmlns:ns2="http://www.example.com/xml/ns/users"
xmlns:ns3="http://www.example.com/2004/11/tHistory"
xmlns:ns4="http://www.example.com/fsi/tHistory"
xmlns:ns5="http://www.example.com/2005/10/tHistory"
xmlns:ns6="http://www.example.com/2010/03/cs"
xmlns:ns7="http://www.example.com/2005/10/users"
xmlns:ns8="http://www.example.com/2010/03/tHistory">
<ns7:user><ns7:id>Matt.Smith</ns7:id>
<ns7:lastName>Smith</ns7:lastName>
<ns7:firstName>Matt</ns7:firstName>
<ns7:otherName></ns7:otherName>
<ns7:gender>male</ns7:gender>
<ns7:email>matt@company.co.uk</ns7:email>
<ns7:locale>en</ns7:locale>
<ns7:role><ns7:id>A</ns7:id>
<ns7:name>System Administrator</ns7:name></ns7:role>
<ns7:employeeNumber></ns7:employeeNumber>
<ns7:organization>
<ns7:id>8000</ns7:id>
<ns7:name>Organisation Title</ns7:name>
</ns7:organization>
<ns7:organization>
<ns7:id>20707</ns7:id>
<ns7:name>London Office</ns7:name>
</ns7:organization>
<ns7:attribute>
<ns7:code>0</ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code>0</ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description></ns7:attribute>
<ns7:attribute><ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
<ns7:attribute>
<ns7:code></ns7:code>
<ns7:description>Unassigned</ns7:description>
</ns7:attribute>
</ns7:user>
</ns7:users>
这个xml全部在一行中,我手动输入了换行符,使其可读.
解决方法:
更新:要打印firstname(或任何其他),您可以使用the usual SimpleXML addressing mechanisms.您的情况稍微复杂一点,因为您正在使用名称空间.仍然可行 – 尝试一些like this:
$data->children('ns7', true)->user[0]->lastName
re:我期待print_r($data)打印就好像它是一个数组[…]:这种期望是错误的.它肯定会很方便,但这不是它的工作原理.要打印SimpleXML对象的xml字符串表示形式,请使用asXML()
.
更新结束
你期望print_r($data)打印什么? SimpleXMLElement Object()似乎是完全有效的输出给我.这并不意味着xml有问题.如果要查看SimpleXMLElement对象的实际xml,请尝试print $data-> asXML().
今天关于错误:“输入的UTF-8输入不正确,表示编码!” 使用PHP的simplexml_load_string和utf8towcs里输入的不对的介绍到此结束,谢谢您的阅读,有关PHP simplexml_load_string() 函数、php simplexml_load_string() 函数把 XML 字符串载入对象中、PHP simplexml_load_string()函数实例讲解、php – Simplexml_load_string($string)返回一个空对象,但$string包含xml?代码如下等更多相关知识的信息可以在本站进行查询。
本文标签: