Php 仅替换字符串中的所有点,而不替换数值中的所有点

Php 仅替换字符串中的所有点,而不替换数值中的所有点,php,Php,我想替换字符串中所有出现的点(.)而不是数字或数值。我举了个例子 STRING : 10.10.2015 11.30 09/2007 83 HELLO.HOW.ARE.YOU $.### OUTPUT : 10.10.2015 11.30 09/2007 83 HELLO HOW ARE YOU $ ### 我尝试在php中使用preg_replace使用非捕获查找组来测试前一个字符是否为数字 $string = '10.10.2015 11.30 09/2007 83 HELLO.HOW.A

我想替换字符串中所有出现的点(.)而不是数字或数值。我举了个例子

STRING : 10.10.2015 11.30 09/2007 83 HELLO.HOW.ARE.YOU $.###
OUTPUT : 10.10.2015 11.30 09/2007 83 HELLO HOW ARE YOU $ ###

我尝试在php中使用preg_replace使用非捕获查找组来测试前一个字符是否为数字

$string = '10.10.2015 11.30 09/2007 83 HELLO.HOW.ARE.YOU $.###';
$result = preg_replace('/(?<=[^\d])\./', ' ', $string);
var_dump($result);
$string='10.10.2015 11.30 09/2007 83 HELLO.HOW.ARE.YOU$。##;

$result=preg_replace('/(?使用非捕获查找组测试前一个字符是否为数字

$string = '10.10.2015 11.30 09/2007 83 HELLO.HOW.ARE.YOU $.###';
$result = preg_replace('/(?<=[^\d])\./', ' ', $string);
var_dump($result);
$string='10.10.2015 11.30 09/2007 83 HELLO.HOW.ARE.YOU$。##;

$result=preg\u replace('/(?我不是preg\u replace专家,所以我写了一个函数,它会将字符串拆分为数组,然后检查是否存在任何
,如果它找到一个点,它会检查点是否位于两个数字之间。如果是,我的函数会将
替换为

function removeDots($string) {
    $arr = str_split($string);
    foreach($arr as $key => $val) {
        if($val == ".") {
            if(!is_numeric($arr[$key-1]) && !is_numeric($arr[$key+1])) {
                $arr[$key] = " ";
            }
        }
    }
    return implode($arr);
}
结果如下:

$str = "STRING : 10.10.2015 11.30 09/2007 83 HELLO.HOW.ARE.YOU $.###";
echo removeDots($str);
输出:

字符串:10.10.2015 11.30 09/2007 83你好美元###


我不是preg_replace guru,因此我编写了一个函数,将字符串拆分为数组,然后检查是否存在任何
,如果它发现一个点,它将检查该点是否位于两个数字之间。如果是,我的函数将用
替换

function removeDots($string) {
    $arr = str_split($string);
    foreach($arr as $key => $val) {
        if($val == ".") {
            if(!is_numeric($arr[$key-1]) && !is_numeric($arr[$key+1])) {
                $arr[$key] = " ";
            }
        }
    }
    return implode($arr);
}
结果如下:

$str = "STRING : 10.10.2015 11.30 09/2007 83 HELLO.HOW.ARE.YOU $.###";
echo removeDots($str);
输出:

字符串:10.10.2015 11.30 09/2007 83你好美元###