我有一个字符串变量,如下所示。我试图把它分成一个数组,甚至分解成每个元素的变量(变化,日高等)。分裂一个困难的字符串
$a='last: 901.5001 @ 11:35am EST 11/10/2011 <br>change: -5.9999 <br>day high:
921.50 <br>day low: 882.00 <br>open: 917.50 <br>volume: 808998';
echo $a;
任何想法,我怎么做到这一点?
我有一个字符串变量,如下所示。我试图把它分成一个数组,甚至分解成每个元素的变量(变化,日高等)。分裂一个困难的字符串
$a='last: 901.5001 @ 11:35am EST 11/10/2011 <br>change: -5.9999 <br>day high:
921.50 <br>day low: 882.00 <br>open: 917.50 <br>volume: 808998';
echo $a;
任何想法,我怎么做到这一点?
你可以在<br>
第一,然后在第一个冒号拆裂:
$temp = explode("<br>",$a);
$data = array();
foreach ($temp as $item) {
list($name, $value) = explode(":", $item, 2);
$data[$name] = $value;
}
应该输出:
Array
(
[last] => 901.5001 @ 11:35am EST 11/10/2011
[change] => -5.9999
[day high] => 921.50
[open] => 882.00
... etc ...
)
这应该做
$tmps = explode('<br>', $string);
$arr = array();
foreach($tmps as $tmp){
list($key, $val) = explode(':', $tmp,2);
$arr[trim($key)] = trim($val);
}
var_dump($arr)
您可在线路$arr[trim($key)]
更改为$arr[]
,如果你不关心什么是以前的:
也许大卫打算再次用':'分割,得到'$ arr ['day high'] = 921.50' – Smamatti
澄清添加到顶部。 – David19801
$step_one = explode('<br>', $string);
foreach($step_one as $step_two)
{
$step_three = explode(': ', $step_two);
$final[$step_three[0]] = $step_three[1];
}
var_dump($final);
或者得到什么在你的评论:
$step_one = explode('<br>', $string);
foreach($step_one as $step_two)
{
$step_three = explode(': ', $step_two);
$final[] = $step_three[1];
}
var_dump($final);
使用HTML的字符串匹配(尤其是正则表达式)可以是危险的,因为任何微小的变化可能会误事。但是,如果你的代码被称为是好的:
preg_match_all('/([^:]+):(.+)<br>/U', $a.'<br>', $m, PREG_SET_ORDER);
$a = array();
foreach ($m as $v) $a[$v[1]] = trim($v[2]);
var_dump($a);
如果你不想按键那么它只是变成了:
preg_match_all('/:(.+)<br>/U', $a.'<br>', $m, PREG_SET_ORDER);
$a = array();
foreach ($m as $v) $a[] = trim($v[1]);
甚至:
preg_match_all('/:\s(.+)\s<br>/U', $a.'<br>', $m);
$a = $m[1];
aw,你打败了我。尽管如此,我的速度要快几纳秒。 :P – DampeS8N
我不敢相信这个工作。很简单!谢谢。 – David19801