有时我会在 XML 中收到 xml 标签之外的文本,如下所示:
Bad command error. XYZ. Some more text<?xml version="1.0" encoding="utf-8"?><xml></xml>
这会在 php.ini 中返回错误。因为我正在使用这个函数来读取 xml:
simplexml_load_string($xml);
有没有办法可以删除 xml 标签之外的文本,这样我就不会在 xml 中出现错误?
提前致谢!
有时我会在 XML 中收到 xml 标签之外的文本,如下所示:
Bad command error. XYZ. Some more text<?xml version="1.0" encoding="utf-8"?><xml></xml>
这会在 php.ini 中返回错误。因为我正在使用这个函数来读取 xml:
simplexml_load_string($xml);
有没有办法可以删除 xml 标签之外的文本,这样我就不会在 xml 中出现错误?
提前致谢!
if (preg_match("/<\\?xml.*\\?>.*/", $xml, $matches)) {
$xml = $matches[0];
}
试试这个代码,它只会提取 xml。
$lpos = strpos('<?xml', $xml);
$xml = substr($xml, $lpos, strrpos('>', $xml) - $lpos + 1);
但它有一些限制,例如:xml后面可以有'>'字符。我也建议尝试tidy_repair_string()
快速单线。
$xml = preg_replace("/^.+<\\?xml/", "<?xml", $xml, 1);
将删除在<?xml
标记之前的字符串中找到的任何字符。
但是,我会说,如果您得到这样格式错误的 XML,您应该尝试找出错误格式的原因,而不是仅仅尝试解决它。
听起来首先生成 XML 的代码中有一个讨厌的错误。如果是您的代码,您需要在那里解决问题,而不是回避问题。如果它来自第三方系统,您需要通知他们该错误。