Php 如何替换每秒钟的空白?

Php 如何替换每秒钟的空白?,php,pcre,Php,Pcre,我希望使用preg\u replace将每秒的空格替换为“,”。输入字符串如下: $string = 'a b c d e f g h i'; a b,c d,e f,g h,i preg_replace('/(\S+\s+\S+)\s/', '$1,', $string) a b,c d,e f,g h,i 应产生如下输出: $string = 'a b c d e f g h i'; a b,c d,e f,g h,i preg_replace('/(\S+\s+\S+)\s/'

我希望使用
preg\u replace
将每秒的空格替换为“
”。输入字符串如下:

$string = 'a b c d e f g h i';
a b,c d,e f,g h,i
preg_replace('/(\S+\s+\S+)\s/', '$1,', $string)
a b,c d,e f,g h,i
应产生如下输出:

$string = 'a b c d e f g h i';
a b,c d,e f,g h,i
preg_replace('/(\S+\s+\S+)\s/', '$1,', $string)
a b,c d,e f,g h,i

谢谢

因为您想搜索和替换字符,您可以通过以下方式进行:

// function to replace every '$n'th occurrence of $find in $string with $replace.
function NthReplace($string,$find,$replace,$n) {
        $count = 0;
        for($i=0;$i<strlen($string);$i++) {
                if($string[$i] == $find) {
                        $count++;
                }
                if($count == $n) {
                        $string[$i] = $replace;
                        $count = 0;
                }
        }
        return $string;
}
//函数,用于将$find在$string中的每一次“$n”处替换为$replace。
函数n替换($string,$find,$replace,$n){
$count=0;

对于($i=0;$i),您可以使用和的组合:

但它假设每个单词都由一个空格分隔

另一个可能更简单的解决方案是这样使用:

$string = 'a b c d e f g h i';
a b,c d,e f,g h,i
preg_replace('/(\S+\s+\S+)\s/', '$1,', $string)
a b,c d,e f,g h,i
模式
(\S+\S+\S+\S
匹配一个或多个非空白字符(
\S+
)的任意序列,后跟一个或多个空白字符(
\S+
),后跟一个或多个非空白字符,后跟一个空白字符,并用逗号替换最后一个空白。将忽略前导空白

因此,在这种情况下,匹配将是:

a b c d e f g h i
\__/\__/\__/\__/
然后,将其替换为以下内容:


如果上一次调用返回的计数器号码为奇数,则为不同的字符串调用
fun
时,此操作将失败。只需在所述字符串上连续调用
preg\u replace\u callback(“/()/”、'fun'、$string)
两次,就会得到不同的结果。