我有这个字符串:
O:37:"Ivory\GoogleMap\Service\Base\Distance":2:{s:43:"Ivory\GoogleMap\Service\Base\Distancetext";s:6:"572 km";s:44:"Ivory\GoogleMap\Service\Base\Distancevalue";i:572343;}
只需返回572343值。
答案 0 :(得分:0)
这不是一个数组,而是一个已经序列化的Google对象。它希望您在Distance
命名空间中有一个名为Ivory\GoogleMap\Service\Base\
的对象。
我发现了一个似乎可以处理的github仓库。
如果这不是你想要的,你可以尝试一些有点不雅的东西,比如从字符串的末尾向后读,直到你拥有所有的数字。
str_replace(';}','',$string);
$output = '';
for ($i = -1; is_numeric(substr($string, $i,1)); $i--) {
$output = substr($string, $i,1).$output;
}
echo $output;
或者您可以尝试explode
使用'“; i:'作为令牌并抓住第二个元素。
$pieces = explode('";i:', $string);
$number = str_replace(';}','',$pieces[1]);
echo $number;
或者你可以用正则表达式做一些更稳定的事情(正如你猜测的那样,我不喜欢)。
来自OP评论的更新:似乎他们实际上正在努力使用一组Google Ivory对象而不是字符串。这是另一个问题。但是,如果那是他们需要解析的字符串,我的回答会有所帮助。