Oma*_*mar 2 php string explode
我试图从字符串中获取一个简单的数组.
EJ.[位置] => ???? [标题] => ??? [pitch] => ??? [zoom] => ???
但由于某种原因,我收到以下错误:
注意:未定义的索引:第21行的标题
这是PHP代码:
<?php
$mysql_data=
"position: 34.032616, -118.286564|
heading: -159.50240187408838|
pitch: 0|
zoom: 2";
$pov = explode("|", $mysql_data);
foreach($pov as $key)
{
$element = explode(": ", $key);
$pov[ $element[0] ] = $element[1];
}
unset($element);
//Testing echoes
print_r($pov);
echo "\n";
echo $pov['heading'];
?>
Run Code Online (Sandbox Code Playgroud)
另外,是否有一种更简单的方法可以一次性完成这一操作并且一起跳过foreach?
顺便说一句:我不需要键的0,1..etc,只标记为'heading','zoom'等
前面有一个换行符heading.
在你的循环中你应该trim()是数组键(以及值以防万一):
$pov[ trim($element[0]) ] = trim($element[1]);
Run Code Online (Sandbox Code Playgroud)
更新
一个简单的正则表达式也将解决这个问题:
$s = <<<EOM
position: 34.032616, -118.286564|
heading: -159.50240187408838|
pitch: 0|
zoom: 2
EOM;
if (preg_match_all('/(\w+):([^|]+)/', $s, $matches)) {
$pov = array_combine($matches[1], $matches[2]);
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句:不要使用parse_str黑客攻击,该功能适用于已经正确进行URL编码的数据,而且老实说这是错误的工具.
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |