2 回答
TA贡献1830条经验 获得超3个赞
你不需要正则表达式来做到这一点。您可以使用 strtok() ( https://www.php.net/manual/en/function.strtok.php )等基本字符串操作将响应标记为数组。然后您可以解析每个响应的 XML。
您可以使用的另一个字符串操作是:explode() https://www.php.net/manual/en/function.explode.php
哦,我假设您不想花时间编写 XML 解析器。谷歌有关在 PHP 中解析 XML 的信息或库。重新发明轮子是没有意义的。
TA贡献1864条经验 获得超6个赞
从您的文件中,您可以使用以下表达式提取 xml 部分:
^<\?xml version="1.0"\?>(?:\r?\n(?!</MYXML>).*)*\r?\n</MYXML>$
正则表达式演示| php 演示
从匹配中您可以提取这些部分并使用simplexml_load_file或使用DOMDocument和例如DOMXPath来获取您的值。
例如:
$str = "...";
$re = '~^<\?xml version="1.0"\?>(?:\r?\n(?!</MYXML>).*)*\r?\n</MYXML>$~m';
preg_match_all($re, $str, $matches);
foreach ($matches[0] as $match) {
$dom = new DOMDocument();
$dom->loadXML($match);
$xpath = new DOMXPath($dom);
$val = $xpath->query("/MYXML/body/data_block")->item(0)->nodeValue;
echo $val . PHP_EOL;
}
- 2 回答
- 0 关注
- 117 浏览
添加回答
举报