11

複数の改行を含む文字列があります。

文字列:

This is         a dummy text.               I need              




to                                      format
this.

望ましい出力:

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

私はこれを使用しています:

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

しかし、それは希望/必要に応じて機能していません。間にスペースを入れない単語もあります。

実際には、すべての単語を単一のスペースで区切って文字列を変換する必要があります。

4

1 に答える 1

22

使用することをお勧めしますpreg_replace

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

デモ: http://codepad.org/no6zs3oo

" . "最初の例の部分で気づいたかもしれません。句読点が直後に続くスペースは、おそらく完全に削除する必要があります。簡単な変更により、次のことが可能になります。

$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 );

デモ: http://codepad.org/ZTX0CAGD

于 2012-05-30T05:02:16.163 に答える