在php中如何在字符串中插入空格?

在php中如何在字符串中插入空格?,php,preg-replace,Php,Preg Replace,我想根据我想要的模式用空格分隔一个字符串。每两个字,有时三个字。例如: $string = 'marketplace'; 变成 $string = 'mark et pl ace'; 我知道preg\u replace可以做到这一点,但我不知道模式。有人能告诉我怎么做吗?谢谢这个 $string = 'market'; echo implode(" ",str_split($string,2)); 这个 如果您想使用preg_replace…,那么@billyonecan的str_分割可能

我想根据我想要的模式用空格分隔一个字符串。每两个字,有时三个字。例如:

$string = 'marketplace';
变成

$string = 'mark et pl ace';
我知道
preg\u replace
可以做到这一点,但我不知道模式。有人能告诉我怎么做吗?谢谢这个

$string = 'market';
echo implode(" ",str_split($string,2));
这个


如果您想使用preg_replace…,那么@billyonecan的str_分割可能是更好的方法

preg_replace('/(..)/','$1 ', $string);

如果您想使用preg_replace…,那么@billyonecan的str_分割可能是更好的方法

preg_replace('/(..)/','$1 ', $string);

此模式应适用于
preg\u replace

$result = preg_replace("/(\\w{2})/uim", "$1 ", $string);
例如:


此模式应与
preg\u replace
配合使用:

$result = preg_replace("/(\\w{2})/uim", "$1 ", $string);
例如:


使用此功能。只要决定空间应该放在哪一步

function split_by_position($string, $position){
    $splitted = str_split($string, $position);

    foreach($splitted as $part){
        $result .= $part.' ';
    }
    echo $result;
}

$string = 'market';
echo split_by_position($string, 2);

billyonecan的解决方案看起来确实更好,当然更短。我建议你用他的^^

使用此功能。只要决定空间应该放在哪一步

function split_by_position($string, $position){
    $splitted = str_split($string, $position);

    foreach($splitted as $part){
        $result .= $part.' ';
    }
    echo $result;
}

$string = 'market';
echo split_by_position($string, 2);
billyonecan的解决方案看起来确实更好,当然更短。我建议你用他的^^

只要使用

implode(" ",str_split($string, 2))
这里重要的代码是

<?php
$string = "market";
echo implode(" ",str_split($string, 2));
?>

str_split
$string
转换为包含2个字符的数组

然后,
内爆
将使用空格b/w所有数组值连接数组

只要使用

implode(" ",str_split($string, 2))
这里重要的代码是

<?php
$string = "market";
echo implode(" ",str_split($string, 2));
?>

str_split
$string
转换为包含2个字符的数组



然后,
内爆
将使用空格b/w所有数组值连接数组

是否固定为两个字符?
$string=内爆(“”,str_split($string,2))@Abaji,那么billyonecan的anser非常适合您的需要!我认为正确的选择取决于您希望在何处插入空白的规则。如果是“dumb”(每2个字符插入一个空格),则不必使用正则表达式。@Dawiderenchy,这给了我另一个想法,所以我编辑了我的问题。谢谢。它是固定为两个字符吗?
$string=内爆(“”,str_split($string,2))@Abaji,那么billyonecan的anser非常适合您的需要!我认为正确的选择取决于您希望在何处插入空白的规则。如果是“dumb”(每2个字符插入一个空格),则不必使用正则表达式。@Dawiderenchy,这给了我另一个想法,所以我编辑了我的问题。谢谢。你对@BillyoneCanided的回答与此相同,只是看到了评论。@John Robertson,在写下我的答案后才看到评论。你对@BillyoneCanided的回答与此相同,只是看到了评论。@John Robertson,在写下我的答案后才看到评论。也许
trim(…)
最后一个空格。根据OP要求,应接受该空格。尽管如此,@vlzvl-answer也是正确的。如果你想每隔'n'做一次:
/(.{n})/
例如:
/(.{3})/
如果原始字符串的长度是'n'的精确倍数,就像Joop指出的那样,你可能想要rtrim()结果。@Yorick,它正在工作。但是,如果我想把前3个字符分开,下一个是2,那该怎么办?@Abaij如果你想找像“MarketingStuff”=>“Mar ke tin gS tuf f”这样的东西,即:3个字符,然后两个字符等等,你会使用类似于
/(.3})(.2})/
的东西,替换模式为“$1$2”。也就是说,如果您总是希望整个字符串的拆分长度相同,但不同字符串的拆分长度不同,请参见我上面的评论。如果要改变字符串的长度,特别是如果不是以重复的方式,则可能需要采用不同的方法。最后一个空格可能是
trim(…)
。根据OP要求,这应该被接受。尽管如此,@vlzvl-answer也是正确的。如果你想每隔'n'做一次:
/(.{n})/
例如:
/(.{3})/
如果原始字符串的长度是'n'的精确倍数,就像Joop指出的那样,你可能想要rtrim()结果。@Yorick,它正在工作。但是,如果我想把前3个字符分开,下一个是2,那该怎么办?@Abaij如果你想找像“MarketingStuff”=>“Mar ke tin gS tuf f”这样的东西,即:3个字符,然后两个字符等等,你会使用类似于
/(.3})(.2})/
的东西,替换模式为“$1$2”。也就是说,如果您总是希望整个字符串的拆分长度相同,但不同字符串的拆分长度不同,请参见我上面的评论。如果要改变字符串中的长度,尤其是如果不是以重复的方式,则可能需要采用不同的方法。