jsp*_*shu 47 php xml simplexml libxml2
我试图使用此simplexml_load_string()Docs函数检查字符串的有效性为xml, 但它显示了很多警告消息.
如何检查字符串是否是有效的XML而不抑制(@在开头)错误并显示expec的警告函数
Tji*_*irp 73
使用libxml_use_internal_errors()来抑制所有XML错误,然后使用libxml_get_errors()来迭代它们.
libxml_use_internal_errors(true);
$doc = simplexml_load_string($xmlstr);
$xml = explode("\n", $xmlstr);
if (!$doc) {
$errors = libxml_get_errors();
foreach ($errors as $error) {
echo display_xml_error($error, $xml);
}
libxml_clear_errors();
}
Run Code Online (Sandbox Code Playgroud)
Fel*_*ing 21
从文档:
在加载文档时处理XML错误是一项非常简单的任务.使用该
libxml功能可以在加载文档时抑制所有XML错误,然后迭代错误.的
libXMLError目的,通过返回libxml_get_errors(),包含几个属性,包括message,line和column错误的(位置).
libxml_use_internal_errors(true);
$sxe = simplexml_load_string("<?xml version='1.0'><broken><xml></broken>");
if (!$sxe) {
echo "Failed loading XML\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}
Run Code Online (Sandbox Code Playgroud)
参考: libxml_use_internal_errors
小智 10
我的版本是这样的:
//validate only XML. HTML will be ignored.
function isValidXml($content)
{
$content = trim($content);
if (empty($content)) {
return false;
}
//html go to hell!
if (stripos($content, '<!DOCTYPE html>') !== false) {
return false;
}
libxml_use_internal_errors(true);
simplexml_load_string($content);
$errors = libxml_get_errors();
libxml_clear_errors();
return empty($errors);
}
Run Code Online (Sandbox Code Playgroud)
测试:
//false
var_dump(isValidXml('<!DOCTYPE html><html><body></body></html>'));
//true
var_dump(isValidXml('<?xml version="1.0" standalone="yes"?><root></root>'));
//false
var_dump(isValidXml(null));
//false
var_dump(isValidXml(1));
//false
var_dump(isValidXml(false));
//false
var_dump(isValidXml('asdasds'));
Run Code Online (Sandbox Code Playgroud)
试试这个
//check if xml is valid document
public function _isValidXML($xml) {
$doc = @simplexml_load_string($xml);
if ($doc) {
return true; //this is valid
} else {
return false; //this is not valid
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66992 次 |
| 最近记录: |