2017-01-09 237 views

回答

2

使用此:

$res = preg_replace('/,\s+(?=\d)/', '', $string); 

这之前删除每个逗号和下面的空间没有任何数字。

如果你想保持两位数前一个空间:

$res = preg_replace('/,\s+(?=\d)/', ' ', $string); 
2

使用preg_replace功能与特定的正则表达式的解决方案:

$str = 'Mustardroad, 21, Teststreet 2, Point Place, 5'; 
$str = preg_replace("/,(?=\s+\d)/", "", $str); 

print_r($str); 

输出:

Mustardroad 21, Teststreet 2, Point Place 5 

(?=\s+\d) - 前瞻积极的断言,保证了一个逗号,其次是“空间和多项

1

没有正则表达式,你可以这样做:

$str = 'Mustardroad, 21, Teststreet 2, Point Place, 5'; 

$result = array_reduce(explode(', ', $str), function ($c,$i) { 
    if (empty($c)) 
     return $i; 
    return is_numeric($i[0]) ? "$c $i" : "$c, $i"; 
}); 

随着preg_replace:看@Roman或@Toto答案。 (最终用文字空间代替\s+,如果它是你想要的)

相关问题