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