如何从字符串中提取数字并添加到数组中?

我想转换这个字符串:

<5> 20825.24 </ 5> <7> 0.0 </ 7> <8> 0.0 </ 8>

到具有键值的数组

我真的很感激你的帮助

我尝试了不同的 xmlParse 策略,但它不完全是一个 xml。

$xml = new \SimpleXMLElement("<5>20825.24</5><7>0.0</ 7><8>0.0</8>");

响应:无法将字符串解析为 XML

我期待这样的数组:

[5=>20825.24,7=>0.0,8=>0.0]


白衣非少年
浏览 197回答 3
3回答

萧十郎

只要您的输出在 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(&nbsp; &nbsp; [5] => 20825.24&nbsp; &nbsp; [7] => 0.0&nbsp; &nbsp; [8] => 0.0)

一只名叫tom的猫

<?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) {&nbsp; &nbsp; $outTotal[$number] = $output[$key];}var_dump($outTotal);给出:array(3) {&nbsp; [5]=>&nbsp; string(8) "20825.24"&nbsp; [7]=>&nbsp; string(3) "0.0"&nbsp; [8]=>&nbsp; string(3) "0.0"}
打开App,查看更多内容
随时随地看视频慕课网APP