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。我也在回答中添加了你的评论。