2011-11-10 6 views
0

다음과 같은 문자열 변수가 있습니다. 나는 각 요소 (변경, 하루 최고 등)에 대한 배열이나 심지어 별도의 변수로 그것을 분할하려고 해요.어려운 문자열 분할

$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; 

어떻게하면 좋을까요?

답변

1

전에 무엇을 처리하지 않는 경우

$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[]에 선 $arr[trim($key)]을 변경할 수 있습니다해야 :

$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 ... 
) 
+1

아, 너는 나를 때렸다. 내 것은 나노초처럼 더 빠릅니다. : P – DampeS8N

+0

나는 이것이 효과가 있다고 믿을 수 없다. 너무 간단! 감사. – David19801

2

이것은 당신이 먼저, 다음 첫 번째 콜론에 분할 <br>에 분할 할 수있는 :

+0

아마 다윗이하고자 다시 ':'로 나누면'$ arr [ 'day high'] = 921.50' – Smamatti

+0

설명이 맨 위에 추가됩니다. – David19801

0
$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); 
0

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];