Php 字符串切片

Php 字符串切片,php,string,tokenize,Php,String,Tokenize,有没有一种方法可以分割一个字符串,比如说我有这个变量 $output=Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87 我想用一种方式来分割它,我想用纬度和经度值来分离变量,subtok不起作用我建议您阅读PHP帮助中的正则表达式。我建议您阅读PHP帮助中的正则表达式。您不需要正则表达式;使用explode将字符串拆分,先按&,然后按=,您可以使用它有效

有没有一种方法可以分割一个字符串,比如说我有这个变量

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

我想用一种方式来分割它,我想用纬度和经度值来分离变量,subtok不起作用

我建议您阅读PHP帮助中的正则表达式。

我建议您阅读PHP帮助中的正则表达式。

您不需要正则表达式;使用explode将字符串拆分,先按&,然后按=,您可以使用它有效地将其解析为一个漂亮的小数组,将名称映射到值。

这不需要正则表达式;使用explode将字符串拆分,先按&,然后按=,您可以使用它有效地将其解析为一个漂亮的小数组,将名称映射到值。

我不确定您在代码中到底演示了什么,可能只是一些输入错误,$output是变量的名称,还是字符串的一部分

假设它是变量的名称,而您只是忘记在字符串上加引号,那么您有两个选项:

这将创建一个包含以下值的数组:Country=UNITED STATESUS、City=Scottsdale、AZ等


这将创建一个数组,其中交替的元素是变量及其值:Country、UNITED STATESUS、City、Scottsdale、AZ等。

我不确定您在代码中到底演示了什么,可能只是一些输入错误,$output是变量的名称还是字符串的一部分

假设它是变量的名称,而您只是忘记在字符串上加引号,那么您有两个选项:

这将创建一个包含以下值的数组:Country=UNITED STATESUS、City=Scottsdale、AZ等


这将创建一个数组,其中交替元素是变量及其值:国家、美国、城市、斯科茨代尔、亚利桑那州等。

您可以执行以下操作:

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

您可以执行以下操作:

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

}
$output='Country=UNITED STATES (US) &City=Scottsdale, AZ &Latitude=33.686 &Longitude=-111.87';
parse_str($output, $array);
$latitude = $array['latitude'];
这将为您提供设置为键/值对中的值的变量,如$Latitude和$Longitude

$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一样危险

你也可以这样做

parse_str($output);
echo $latitude;

我认为使用数组会更好,因为您不会到处创建变量,如果您不信任输入字符串,这可能会像register\u globals一样危险。

它看起来像来自URL,尽管URL编码已经消失

我支持使用or的建议,但您可能也感兴趣


它看起来像是来自一个URL,尽管URL编码已经消失了

我支持使用or的建议,但您可能也感兴趣


所有其他答案都不够充分。每次都应该这样

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);
}

所有其他答案都不够充分。每次都应该这样

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);
}

变量?请不要:这真是个坏主意。如果您的键包含空格怎么办?PHP的关联数组在这里更有意义:$array[$var]=trim$val;变量?请不要:这真是个坏主意。如果您的键包含空格怎么办?PHP的关联数组在这里更有意义:$array[$var]=trim$val;你能举个例子吗?谢谢。$var_数组=分解'&',$var_字符串;foreach$var_数组为$var_to_splitI通过按enter键将最后一个条目搞乱了。我不喜欢那种自动提交的风格。现在,无论我如何尝试,它似乎都不会将以下内容包装在预代码块中`//将字符串分隔为单个变量$var\u array=explode'&',$var\u string$映射的变量数组=数组;//将此设置为将每个$var_数组的映射变量保持为$var_to_split{$var_to_split=explode'=',$var_to_split;$mapped_var_数组[$var_to_split[0]]=$var_to_split[1];//现在使用$mapped_var_数组做任何你想做的事情@HitAutodestruct非常感谢@prayfomojo。我也在回答中添加了你的评论。你能举个例子吗?谢谢。$var_数组=分解'&',$var_字符串;foreach$var_数组为$var_to_splitI通过按enter键将最后一个条目搞乱了。我不喜欢那种自动提交的风格。现在,无论我如何尝试,它似乎都不会将以下内容包装在预代码块中`//将字符串分隔为单个变量$var\u array=explode'&',$var\u string$映射的变量数组=数组;//将此设置为将每个$var_数组的映射变量保持为$var_to_split{$var_to_split=explode'=',$var_to_split;$mapped_var_数组[$var_to_split[0]]=$var_to_split[1];//现在使用$mapped_var_数组做任何你想做的事情@HitAutodestruct非常感谢@prayfomojo。我也在回答中添加了你的评论。