有没有办法切一个字符串让我说我有这个变量
$output=Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87
我希望以某种方式对其进行切片,以便将纬度和经度值拉入单独的变量,但是subok不能达到目的
答案 0 :(得分:8)
你不需要正则表达式;使用explode()
来分割字符串,首先是&
,然后是=
,您可以使用它来有效地将其解析为将名称映射到值的漂亮的小数组。
答案 1 :(得分: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 :(得分: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'];
答案 3 :(得分:0)
我不确定你在代码中究竟展示了什么,也许只是一些拼写错误,“$ output”是变量的名称,还是字符串的一部分?
假设它是变量的名称,而您只是忘记在字符串上添加引号,您有几个选项:
$sliced = explode('&', $output)
这将创建一个包含值的数组:“Country = United States STATES(US)”,“City = Scottsdale,AZ”等。
$sliced = preg_split('/[&=]/', $output);
这将创建一个数组,其中交替的元素是“变量”及其值:“国家”,“美国(美国)”,“城市”,“斯科茨代尔,亚利桑那州”等。
答案 4 :(得分: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等变量,这些变量设置为键/值对中的值。
答案 5 :(得分: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);
}
答案 6 :(得分:-1)
我建议您阅读PHP帮助中的正则表达式。