我有一个带有一到两个空格的字符串。我想用一个空白替换单个空格和用一个空格替换双白色空格。如果只是尝试匹配''它将核对所有的空白区域。有没有办法做到这一点?
答案 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()
函数并将所有''替换为''。