$string = "
put returns between paragraphs
for linebreak add 2 spaces at end
";
文字列からすべての新しい行を削除します。
私はこの正規表現を使っています。それらすべてを捕らえることができます。問題は、どの関数を使うべきかわからないということです。
/\r\n|\r|\n/
$string
は次のようになります。
$string = "put returns between paragraphs for linebreak add 2 spaces at end ";
二重改行には注意が必要です。二重改行は二重スペースの原因になります。この非常に効率的な正規表現を使ってください。
$string = trim(preg_replace('/\s\s+/', ' ', $string));
複数のスペースと改行は単一のスペースに置き換えられます。
編集: 他の人が指摘しているように、この解決法は単語の間にある単一の改行と一致する問題があります。これは例にはありませんが、そのような状況がどのように発生する可能性があるかを容易に確認できます。別の方法は次のようにすることです。
$string = trim(preg_replace('/\s+/', ' ', $string));
受け入れられた答えに関するいくつかのコメント:
+
は "1以上"を意味します。 \s
を繰り返す必要はないと思います。私はあなたが単に'/\s+/'
を書くことができると思います。
また、文字列の最初と最後の空白を削除したい場合はtrim
を追加してください。
これらの変更を加えると、コードは次のようになります。
$string = preg_replace('/\s+/', ' ', trim($string));
preg_replace()
を使うだけ
$string = preg_replace('~[\r\n]+~', '', $string);
このコードでは str_replace()
を使用しなくても済むかもしれませんが、コードはきれいには見えません。
$string = str_replace(array("\n", "\r"), '', $string);
ideone でライブで見る
$string = str_replace(array("\n", "\r"), ' ', $string);
あなたはその速度と配列で二重引用符を使うためにstr_replaceを使うべきです
str_replace(array("\r\n","\r"),"",$string);
PCRE正規表現の置き換えはpreg_replaceを使って行うことができます: http://php.net/manual/en/function.preg-replace.php
$new_string = preg_replace("/\r\n|\r|\n/", ' ', $old_string);
改行を置き換えるか、またはスペースを使用して文字を返します。何も置き換えたくない場合は、2番目の引数を''
に変更します。
これを使って:
一連の改行を空の文字列に置き換えます。
$string = preg_replace("/[\\n\\r]+/", "", $string);
または、おそらく改行を単一のスペースに置き換えたいと思います。
$string = preg_replace("/[\\n\\r]+/", " ", $string);
エスケープシーケンス\R
は一般的な改行に一致します
つまり、Unicodeによる 改行シーケンス と見なされるものすべてです。これには、
\v
( 垂直空白 )に一致するすべての文字、および複数文字シーケンス\x0D\x0A
...が含まれます。
$string = preg_replace('/\R+/', " ", $string);
8ビット非UTF-8モードでは、
\R
は次のものと同等です。(?>\r\n|\n|\x0b|\f|\r|\x85)
... pcre.org
多分これは動作します:
$str='\n';
echo str_replace('\n','',$str);
テキストの改行は一般に次のように表されます。
\r\n - Windowsコンピュータの場合
\r - アップル製コンピュータの場合
\n - Linuxの場合
//Removes all 3 types of line breaks
$string = str_replace("\r", "", $string);
$string = str_replace("\n", "", $string);
これがすでに送信された回答に対して何らかの価値があるかどうかはわかりませんが、投稿することもできます。
// Create an array with the values you want to replace
$searches = array("\r", "\n", "\r\n");
// Replace the line breaks with a space
str_replace($searches, "", $string);
// Replace multiple spaces with one
$output = preg_replace('!\s+!', ' ', $string);
いただきました:
$string = trim( str_replace( PHP_EOL, ' ', $string ) );
\ n私が間違っていなければ\ nすべてのシステムで正しく動作するわけではないので、これはかなり堅牢な解決策であるべきです。
以下のコードを試すと、テキスト内の空白と新しい行が保持されます。
$str = "
put returns between paragraphs
for linebreak add 2 spaces at end
";
echo preg_replace( "/\r|\n/", "", $str );
これもタブを削除します
$string = preg_replace('~[\r\n\t]+~', '', $text);
誰も正規表現についてほとんど知らないことに驚きました。
PHPの改行を削除
$str = preg_replace('/\r?\n$/', ' ', $str);
Perlで
$str =~ s/\r?\n$/ /g;
意味は、行末の改行文字(効率のため)(オプションでキャリッジリターンが前に付く)をスペースに置き換えます。
\ nまたは\ 015は改行です。\rまたは\ 012は復帰です。 ?正規表現では、前の文字の1または0に一致することを意味します。正規表現の$は、行末に一致することを意味します。
元の最高の正規表現リファレンスはperldoc perlreです。すべてのコーダーはこのドキュメントをよく知っているはずです: http://perldoc.Perl.org/perlre.html すべての機能がすべての言語でサポートされているわけではありません。
これが私が使うパターンです
$string = preg_replace('@[\s]{2,}@',' ',$string);
このコードの下のすべてのテキストはそれを使用してください:
$des = str_replace('\n',' ',$des);
$des = str_replace('\r',' ',$des);
これらの解決策の多くは私にはうまくいきませんでした。これはトリックでしたが -
$svgxml = preg_replace("/(*BSR_ANYCRLF)\R/",'',$svgxml);
これが参照です: - PCREと改行
改行と複数の空白を削除できます。
$pattern = '~[\r\n\s?]+~';
$name="test1 /
test1";
$name = preg_replace( $pattern, "$1 $2",$name);
echo $name;