如何从句子中删除多余的空格、制表符和换行符,并仅用一个空格替换它们? [复制]
Posted
技术标签:
【中文标题】如何从句子中删除多余的空格、制表符和换行符,并仅用一个空格替换它们? [复制]【英文标题】:How do I remove extra spaces, tabs and line feeds from a sentence and substitute them with just one space? [duplicate] 【发布时间】:2011-07-29 04:36:10 【问题描述】:可能重复:remove multiple whitespaces in php
我有一个字符流,一个句子或一个段落,其中可能在两个单词甚至制表符或换行符中有多余的空格,我该如何删除所有这些并用一个空格替换它们。
【问题讨论】:
这个问题怎么能跳过我的眼睛?谢谢沙克蒂 :-) 这个问题与@Shakti 标记为重复的问题不太一样。不过,或许这只是个误会。您希望 single 制表符或换行符发生什么?他们应该一个人呆着吗?多个标签应该变成一个标签,还是应该变成一个空白?混合制表符、空格、换行符等呢? @Tim Pietzcker,我想将所有空格、制表符和换行符转换为一个空格,这样我就可以explode()
使用空格作为分隔符的句子。
所以您的意思是“转换为空格”(ASCII 32)而不是“空白”(空格、换行符、制表符、换页符等)。好的。那么 jeroen 的解决方案就是适合您的解决方案。
好吧,空格不是= ASCII 32空格吗?如果我错了,请纠正我。我不想要非中断(白色)空间。
【参考方案1】:
您可以使用如下正则表达式:
preg_replace("/\s+/", " ", $string);
这应该用一个替换所有多个空格、制表符和换行符。
Thanks to @ridgerunner 的建议 - 如果您添加 'S'
研究修饰符,它会显着加快:
preg_replace('/\s+/S', " ", $string);
'S'
helps "non-anchored patterns that do not have a single fixed starting character" - i.e. a character class.
【讨论】:
还有制表符和换行符?我需要通过多个正则表达式运行我的文本输入吗? @Kumar,不,\s
中包含制表符和换行符。
@Tim Pietzcker 感谢您的补充,我忘了明确提及制表符和换行符。
+1 如果您希望它运行得更快,请添加'S'
study 修饰符:'/\s+/S'
。 ('S'
帮助 “没有单个固定起始字符的非锚定模式” - 即字符类。)
@ridgerunner 谢谢,我不知道。以上是关于如何从句子中删除多余的空格、制表符和换行符,并仅用一个空格替换它们? [复制]的主要内容,如果未能解决你的问题,请参考以下文章