Replace Multiple Spaces and Newlines with only one space in PHP

Deadly 提交于 2019-12-21 07:40:07

问题


I have a string with multiple newlines.

The String:

This is         a dummy text.               I need              




to                                      format
this.

Desired Output:

This is a dummy text. I need to format this.

I'm using this:

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

But it is not working as desired/required. Some of the words don't have spaces between them.

Actually I need to convert the string with all the words separated by single spaces.


回答1:


I would encourage you to use preg_replace:

# string(45) "This is a dummy text . I need to format this."
$str = preg_replace( "/\s+/", " ", $str );

Demo: http://codepad.org/no6zs3oo

You may have noted in the " . " portion of the first example. Spaces that are immediately followed by punctuation should probably be removed entirely. A quick modification permits this:

$patterns = array("/\s+/", "/\s([?.!])/");
$replacer = array(" ","$1");

# string(44) "This is a dummy text. I need to format this."
$str = preg_replace( $patterns, $replacer, $str );

Demo: http://codepad.org/ZTX0CAGD



来源:https://stackoverflow.com/questions/10810211/replace-multiple-spaces-and-newlines-with-only-one-space-in-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!