2009-02-25 133 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); 
}