【发布时间】:2017-02-20 02:32:31
【问题描述】:
我想通过 PHP 中的正则表达式匹配将字符串解析为数据集。 这是我的代码:
$string = "?\t\t\t\t\t\t?\t\t\t\t\t\t\t\t\t\t\t\t<?xml version=\"1.0\" encoding=\"UTF-8\"?><documents><Resp><gatewayId>g10060<\/gatewayId><accountId>310198232<\/accountId><orderNo>0970980541000510490500480<\/orderNo><tId><\/tId><tAmt>20<\/tAmt><result>1<\/result><respCode>21<\/respCode><signMD5>7ecd1eb9b870aaba3bfa45892095194e<\/signMD5><\/Resp><\/documents>";
preg_match_all('/<(.*?)>(.*?)<\\/(.*?)>/', $string, $arr);
echo json_encode($arr);
但是它只返回我[[],[],[],[]],作为空数组。我在https://regex101.com/ 上尝试了正则表达式,它显示了正确的结果,但它在我的服务器上不起作用。
我想要的是:
[ "gatewayId" => "g10060",
"accountId" => "310198232",
"orderNo" => "0970980541000510490500480",
"tId" => "",
"tAmt" => "20",
"result" => "1",
"respCode" => "21",
"signMD5" => "7ecd1eb9b870aaba3bfa45892095194e" ]
我该如何解决这个问题?
【问题讨论】:
-
不要使用正则表达式:stackoverflow.com/questions/3577641/…
-
他们给了我一种类似于xml的奇怪格式,但我不能简单地使用xml解析器
-
那个是 xml
-
在 xml 验证器中失败,我如何用 php 处理它?
-
认为很明显你需要先清理逃逸。 XML 解析器仍然比使用正则表达式更好
标签: php regex preg-match-all