字符串切片,PHP

时间:2009-02-25 21:14:09

标签: php string tokenize

有没有办法切一个字符串让我说我有这个变量

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

我希望以某种方式对其进行切片,以便将纬度和经度值拉入单独的变量,但是subok不能达到目的

7 个答案:

答案 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帮助中的正则表达式。