<?xml version="1.0" encoding="ISO-8859-1"?>
<Note>
<from>
Ahmad
</from>
<to>
Yasir
</to>
<body>
hello yasir.
</Note>
上面是我的xml文件,它错过了<body>
的结束标记。
我想要一个PHP程序,它将检测此错误,并修复错误并放置结束标记。
答案 0 :(得分:0)
如果您正在寻找快速解决方案以修复无法匹配的标记,以下内容可以解决问题:
libxml_use_internal_errors(true);
$file = 'your_xml.xml';
$xml = @simplexml_load_file($file);
$errors = libxml_get_errors();
foreach ($errors as $error)
{
if (strpos($error->message, 'Opening and ending tag mismatch')!==false)
{
$tag = trim(preg_replace('/Opening and ending tag mismatch: (.*) line.*/', '$1', $error->message));
$lines = file($file, FILE_IGNORE_NEW_LINES);
$line = $error->line-1;
$lines[$line] = '</'.$tag.'>'.$lines[$line];
file_put_contents($file, implode("\n", $lines));
}
}
您可以考虑使用更合适的方法,例如使用PHP Tidy extension
相关问题:Fix malformed XML in PHP before processing using DOMDocument functions