为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
白衣非少年 2021-06-29 04:00:50
我想转换这个字符串:<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]
查看完整描述

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

)


查看完整回答
反对 回复 2021-07-09
?
一只名叫tom的猫

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"

}


查看完整回答
反对 回复 2021-07-09
  • 3 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信