如何使用PHP preg_replace进行以下替换?

时间:2011-05-18 06:12:06

标签: php regex

我有一个带有一到两个空格的字符串。我想用一个空白替换单个空格和用一个空格替换双白色空格。如果只是尝试匹配''它将核对所有的空白区域。有没有办法做到这一点?

6 个答案:

答案 0 :(得分:5)

$result = preg_replace('/ (?! )/', '', $subject);

仅当空格后面没有其他空格时才会匹配并删除空格。

输入: 12 34  56 78  90  - >输出:1234 5678 90

答案 1 :(得分:2)

preg_replace('/\s+/',' ',$string);

现在所有双倍空间将被单挑

更新:

$replacements = array(' ','');
 preg_replace('/(\s{2})|(\s{1})/',$replacements,$string);

这样双倍空间变为单一,单一变为nospace;

答案 2 :(得分:1)

<?php
    $s = 'SINGLE SPACE-DOUBLE  SPACE';
    echo $s . PHP_EOL;
    $s = strtr(
        $s,
        array(
            '  ' => ' ',
            ' ' => ''
        )
    );
    echo $s . PHP_EOL;
?>

PS:我正在测试其他案例。

答案 3 :(得分:0)

没有必要使用preg_replace。

str_replace('  ', ' ', $string);

或者,如果你想确保一行中永远不会有空格,那就循环它:

while (strpos($string, '  ') !== false)
    $string = str_replace('  ', ' ', $string);

除非你的意思是任何空格(空格,制表符,换行符),否则你可以使用:

str_replace(array('  ', "\t\t", "\r\r", "\n\n"), array(' ', "\t", "\r", "\n"), $string);

答案 4 :(得分:0)

单个空格:" [^ ]"的空格,后跟另一个空格)。 双空格:" "

答案 5 :(得分:0)

匹配''(两个空格)。虽然对于这样的事情,我认为正则表达式是过度杀戮。只需使用str_replace()函数并将所有''替换为''。