2009-02-25 129 views
1

是有辦法分割一個字符串可以說我有這個變量字符串的切片,PHP

$output=Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87 

我想切它的方式我想拉中獨立變量經緯度值,subtok沒有達到目的

回答

8

你不需要正則表達式;使用explode()來拆分字符串,首先由&,然後再由=,您可以使用它來將其有效地解析爲一個很好的小數組,將名稱映射到值。

+0

請問您能舉一個上面的例子嗎?謝謝。 – hitautodestruct 2012-03-26 12:39:33

+0

$ var_array = explode('&',$ var_string); foreach($ var_array as $ var_to_split) – bikemule 2012-04-03 10:11:14

-1

我建議你閱讀PHP幫助中的正則表達式。

0

我不確定你在代碼中展示了什麼,也許它只是一些錯別字,是「$ output」變量的名稱還是字符串的一部分?

假設它是變量的名字,而你只是忘了引號的字符串,你有幾個選擇:


$sliced = explode('&', $output) 

這將創建值的數組:「國家=美國(US)」, 「城市=斯科茨,AZ」 等


$sliced = preg_split('/[&=]/', $output); 

這將創建具有交替ELEM陣列已廢除作爲 「變量」 和值: 「國家」, 「美國(US)」, 「城市」, 「亞利桑那州斯科茨代爾」 等

0

你可以做到以下幾點:

$output = 'Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87'; 

$strs = explode('&', $output); 
foreach ($strs as $str) { 

    list($var, $val) = explode('=',$str); 
    $$var = trim($val); 

} 

這會爲您提供諸如$ Latitude和$ Longitude之類的變量,它們被設置爲鍵/值對中的值。

3
$output='Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87'; 
parse_str($output, $array); 
$latitude = $array['latitude']; 

你也可以只做到

parse_str($output); 
echo $latitude; 

我認爲使用數組是更好,因爲你沒有創建變量所有的地方,這有可能是危險的(像register_globals的),如果你不」不要相信輸入字符串。

2

它看起來很喜歡它來自一個URL,儘管URL編碼已經消失。

我第二次使用explode()preg_split()的建議,但您可能也有興趣parse_str()

$output = "City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87"; 
parse_str($output, $results); 
$lat = $results['Latitude']; 
$lon = $results['Longitude']; 
0

所有其他的答案是不夠的。這應該每次都有效!

function slice($string, $start){ 
    $st = $string; $s = $start; $l = strlen($st); $a = func_get_args(); 
    $e = isset($a[2]) ? $a[2] : $l; 
    $f = $e-$s; 
    $p = $e < 0 && $s > 0 ? $l+$f : $f; 
    return substr($st, $s, $p); 
}