3 回答
TA贡献1815条经验 获得超13个赞
只要您的输出在 XML 标记名称的开头有数字,它就不是有效的 XML。您可能不得不求助于使用正则表达式来完成这项工作。
这使用<(\d*)>(.*?)</~which 查找<后跟数字,然后 the >and 捕获所有内容,直到下一个</。然后它组合来自捕获组 1(标签名称)和 2(值)的值...
$data = "<5>20825.24</5><7>0.0</ 7><8>0.0</8>";
preg_match_all("~<(\d*)>(.*?)</~", $data, $matches);
$output = array_combine($matches[1], $matches[2]);
print_r($output);
给...
Array
(
[5] => 20825.24
[7] => 0.0
[8] => 0.0
)
TA贡献1906条经验 获得超3个赞
<?php
$subject = '<5> 20825.24 <7> 0.0 <8> 0.0';
$pattern = '/\<(\d)\>\s+(\d+\.\d+)/u';
$result = preg_match_all($pattern,$subject,$output);
$numbers = $output[1];
$output = $output[2];
$outTotal = [];
foreach ($numbers as $key => $number) {
$outTotal[$number] = $output[$key];
}
var_dump($outTotal);
给出:
array(3) {
[5]=>
string(8) "20825.24"
[7]=>
string(3) "0.0"
[8]=>
string(3) "0.0"
}
- 3 回答
- 0 关注
- 196 浏览
添加回答
举报