現在の位置: ホーム> 最新記事一覧> preg_filterでマルチラインテキストNewlinesを処理する正しい方法は何ですか?

preg_filterでマルチラインテキストNewlinesを処理する正しい方法は何ですか?

gitbox 2025-09-25

1。新しいライン文字のタイプ

NewLine文字の表現は、オペレーティングシステムごとに異なります。主に次のタイプがあります。

  • \ n :UNIX/LinuxおよびMacOSが使用するラインブレーク(LF)。

  • \ r \ n :Windowsで使用されるラインブレーク(CRLF)。

  • \ r :古いMac(Mac OS 9および以前のバージョン)が使用するLine Breaks(cr)。

プラットフォーム間でマルチラインテキストを処理する場合、出力またはさらに処理するときに問題を回避するために、さまざまなタイプの新しいライン文字を均一に処理する必要があります。

2。preg_filterを使用する基本的な方法

さまざまなニューラインのマルチラインテキストがあり、すべてのnewlinesを\ n (Unixスタイル)に統一したいとします。これは、 preg_filterを使用して実現できます。簡単な例を次に示します。

 <span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">"Hello, World!\r\nThis is a test.\nAnother line.\rAnd one more line."</span></span><span>;

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\r\n|\r|\n/'</span></span><span>;
</span><span><span class="hljs-variable">$replacement</span></span><span> = </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-variable">$cleaned_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_filter</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$replacement</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">nl2br</span></span><span>(</span><span><span class="hljs-variable">$cleaned_text</span></span><span>);
</span></span>

上記のコードでは、すべてのニューラインと一致する正規式/ \ r \ n | \ r | \ n /を定義します。 preg_filter関数を介して、すべてのNewline文字を\ nに置き換えます。

3.なぜpreg_filterを選択するのですか?

preg_filterpreg_replaceの最大の違いは、通常の交換が失敗したときにnullを返すことですが、 preg_replaceは元の文字列を返します。したがって、Newlinesを扱う場合、 preg_filterは、テキストのNewlinesを簡潔に交換し、Newlinesが一致しない場合は変更が行われないようにするのに特に適しています。

たとえば、次のコードでは、 preg_replaceを使用して同じことを行います。

 <span><span><span class="hljs-variable">$cleaned_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$replacement</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
</span></span>

両方の効果は同じですが、 preg_filterの返品値は、 NULLを返すことなく、通常の試合が成功したときに処理された結果のみを返すことを保証し、追加の判断とエラーの処理を回避します。

4.マルチラインテキストのラインブレークを処理します

テキストに複数の行がある場合、ニューラインの処理は単に\ nに置き換えるだけではありません。次のような特定の条件に基づいて、テキストの形式を調整する必要がある場合があります。

  • 余分なラインブレークを削除します。

  • 特定の空白を維持します。

  • Newline文字の形式を正規化します。

たとえば、次のコードは、テキストで複数の連続したニューラインを削除し、1つの新しいラインのみを保持する方法を示しています。

 <span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">"Hello, World!\n\n\nThis is a test.\n\nAnother line.\n\nAnd one more line."</span></span><span>;

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\n+/'</span></span><span>;
</span><span><span class="hljs-variable">$replacement</span></span><span> = </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-variable">$cleaned_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_filter</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$replacement</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">nl2br</span></span><span>(</span><span><span class="hljs-variable">$cleaned_text</span></span><span>);
</span></span>

この例では、 / \ n+ / regexは1つ以上のニューラインと一致し、それらを別の新しいラインに置き換えます。このようにして、余分な空白の行をクリアし、テキストをきちんと保つことができます。

5。結論

PHPでは、 PREG_FILTERは、特にマルチラインテキストと新しいライン文字を扱う場合、非常に実用的な機能です。正規表現を合理的に使用することにより、ラインブレークの標準化、不要な空白線の削除、特定の文字の交換など、テキストのさまざまな処理を簡単に実行できます。

preg_filter関数を正しく使用する方法を理解することは、コードの効率を改善するだけでなく、異なるオペレーティングシステムのラインブレークによって引き起こされる問題を回避することもできます。マルチラインのテキスト処理を実行するときは、新しいライン文字が期待を満たしているかどうかを確認し、テキスト形式での一貫性を確保するために正規表現を介して適切に処理することを忘れないでください。