Php 如何从一个句子中删除多余的空格、制表符和换行符,并用一个空格代替它们?

Php 如何从一个句子中删除多余的空格、制表符和换行符,并用一个空格代替它们?,php,regex,Php,Regex,可能重复: 我有一个字符流、一个句子或一个段落,可能在两个单词中有额外的空格,甚至制表符或换行符,如何删除所有这些字符并用单个空格替换它们。您可以使用如下正则表达式: preg_replace("/\s+/", " ", $string); 这将用一个空格、制表符和新行替换所有多个空格、制表符和新行 对于建议-如果添加“S”研究修饰符,则速度会显著加快: preg_replace('/\s+/S', " ", $string); 'S'以及制表符和换行符?我需要通过多个正则表达式运行文本输

可能重复:


我有一个字符流、一个句子或一个段落,可能在两个单词中有额外的空格,甚至制表符或换行符,如何删除所有这些字符并用单个空格替换它们。

您可以使用如下正则表达式:

preg_replace("/\s+/", " ", $string);
这将用一个空格、制表符和新行替换所有多个空格、制表符和新行

对于建议-如果添加
“S”
研究修饰符,则速度会显著加快:

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

'S'

以及制表符和换行符?我需要通过多个正则表达式运行文本输入吗?@Kumar,不,制表符和换行符包含在
\s
@Tim Pietzcker感谢您的添加,我忘了明确提到制表符和新行。+1如果您想让它运行得更快,请添加
's'
研究修饰符:
'/\s+/s'
。(
'S'
有助于“没有固定起始字符的非锚定模式”-即字符类。)@ridgerunner谢谢,我不知道。这个问题怎么能让我忽略呢?谢谢Shakti:-)这个问题与@Shakti标记为重复的问题不太一样。也许这只是个误会。您希望单个制表符或换行符发生什么变化?应该让他们一个人呆着吗?多个选项卡应该变成一个选项卡,还是应该变成一个空白选项卡?那么混合制表符、空格、换行符等呢?@Tim Pietzcker,我想将所有空格、制表符和换行符转换为一个空格,这样我就可以
explode()
使用空格作为分隔符的句子。那么你的意思是“转换为空格”(ASCII 32)而不是“空格”(空格、换行符、制表符、换行符等)。好啊那么jeroen的解决方案就是最适合你的了。那么,空白不是等于ASCII 32吗?如果我错了,请纠正我。我不想要不间断的(空白)空间。