PHPで改行・空白行の削除を行う処理

よく忘れがちな、PHPによる改行の削除や、空白行の削除の方法についてまとめました。

PHPで改行を削除する

改行変換

改行の削除は、str_replace関数で行えます。

str_replaceは、('検索対象の文字’, '変換内容’, '元のテキスト’)この3つの引数を当てはめることで、改行コードの部分を空白にすることで、実質的な削除となります。

サンプルコード
$text = 'あ
い
う
え
お';
echo str_replace("\r\n", '', $text);
あいうえお

すべての改行(CR・LF・CRLF)を対応したい場合は、第一引数を配列にして設定してください。

配列にすることで、複数の検索対象を設定できます。

サンプルコード
$text = 'あ
い
う
え
お';
echo str_replace(["\r\n", "\r", "\n"], '', $text);
あいうえお

ただし、PHPのバージョンが5.4未満の場合は、配列を[]で省略する記法がまだ使えないので、array()に置き換えてください。

array()は5.4未満でも、5.4以降でも使用できます。

サンプルコード
$text = 'あ
い
う
え
お';
echo str_replace(array("\r\n", "\r", "\n"), '', $text);
あいうえお

改行が削除できない場合は、シングルクオートで囲っていないか確認

シングルクオート("←これ)で設定してしまうと、「\r\n」はただの文字列として見られてしまいます。

変換対象を改行コードであることを明示するためには、str_replaceで指定する第一引数はダブルクオート(“"←これ)でなければいけません。

でないと、下記のように失敗してしまうので注意です。

サンプルコード
$text = 'あ
い
う
え
お';

echo str_replace(['\r\n', '\r', '\n'], '', $text);




PHPで空白行を削除する

空白行削除

改行ではなく、空白の行のみを対象に削除したい場合は、preg_replaceによる正規表現置き換えで再現できます。

参考 【PHP】正規表現チェッカー

サンプルコード
$text = 'あ
い


う

え
お';
echo preg_replace('/^\r\n/m', '', $text);




こちらは冒頭文字が改行コード、すなわち空白行だった場合は削除する、といった処理を行っています。

複数行として扱うパターン修飾子「m」を入れて、各行に置き換え処理が走ります。

以上、PHPで改行・空白行の削除を行う処理、でした。

PHP