我的字符串是“ 1049”
不可能删除并获得1049,我在做什么错?
$distance // "1 049"
$distance = $str = preg_replace('/\s\s+/', ' ', $distance);
$distance // "1 049"
更新
我从Google Distance API获得了一个json结果,这两个str_replace可以工作,但是我尝试在末尾进行preg_replace以获得1049而不是“ 1 049”
$response = \GoogleMaps::load('directions')
->setParam([
'origin' => $origin,
'destination' => $destination,
'mode' => 'driving' ,
'language' => 'fr',
])->get();
$parsed_json = (json_decode($response));
if($parsed_json->status != "NOT_FOUND") {
$result = $parsed_json->{'routes'}[0]->{'legs'}[0]->{'distance'}->{'text'};
$a = $result;
$b = str_replace(" km",'',$a);
$distance = str_replace(",",'.',$b);
$distance = preg_replace('/\s+/', '', $distance);
}
var_dump($distance) // "1 049"
答案 0 :(得分:3)
两个问题:
\s
,后跟“一个或多个空格” \s+
,这意味着至少两个空格在一起。 您正在寻找这个:
var_dump(preg_replace('/\s+/', '', '1 049'));
但是,也可以使用str_replace()更简单地完成此操作:
var_dump(str_replace(' ', '', '1 049'));
编辑
根据您对原始问题的更新以及您庆幸地将值复制并粘贴到your comment的事实,我发现您要摆脱的内容实际上不是空格,而是字符不同其中ord()
个数字是226
。我能找到的所有代码页都说它是â
或ô
,但奇怪的是,仅显示了这些代码,而没有显示您的字符。也许其他人可以解释它实际上是哪个字符。
请参见3v4l.org snippet(我无法通过stackoverflow显示字符):
话虽如此,您有两种选择:
1)您可以替换该特殊字符并将其删除:
// note that SO shows it as whitespace but your mystery character is in there!
var_dump(str_replace(' ', '', '1 049'));
2)或者,也许是更好的方法,因为您基本上只想要数字,所以可以保存前面的步骤,而不是
$a = $result;
$b = str_replace(" km",'',$a);
$distance = str_replace(",",'.',$b);
$distance = preg_replace('/\s+/', '', $distance);
您只需一步就可以补充所有尚未消失的东西:
$distance = preg_replace('/[^0-9]+/', '', $result);
答案 1 :(得分:-1)
说您的字符串是:
cash = '1 049'
您所要做的就是
cash.replace(' ', '')
将删除所有空格。 希望对您有帮助