PHPで差分比較ツールを作成した際の文字化け問題とその解決方法

PHPで差分比較ツールを作成した際の文字化け問題とその解決方法

PHPで差分ツールを作成している際に遭遇した文字化けの問題と、その解決方法を紹介していきたいと思います。

差分ツールを作成する際、古いテキストと新しいテキストを行ごとに比較する必要があります。まずはテキストを行ごとに配列に変換する必要がありました。
テキストを行ごとに配列に変換するため、最初に使用したのはPHPのexplode関数です!

文字化け解決前のコード(explode使用)

$oldLines = explode(“\n”, $oldText);
$newLines = explode(“\n”, $newText);

このコードは基本的にうまく動作しますが、処理するテキストに改行コードが混在している場合や、UTF-8エンコーディングのテキストを処理する際に問題が発生することがあります。
案の定文字化けが発生し、解決に頭を悩ませました・・・。

文字化けの解決方法(preg_split使用)

文字化け問題を解決するために、preg_split関数を使用することにしました。
preg_splitは、正規表現を使用して文字列を分割するため、より柔軟な処理が可能です。
そして、UTF-8で処理するためにパターンの末尾に『/u』修飾子を追加します!

文字化け解決後のコード

$oldLines = preg_split(‘/\R/u’, $oldText);
$newLines = preg_split(‘/\R/u’, $newText);

UTF-8エンコーディングのテキストを扱う際にはpreg_split関数を使用し、
正規表現パターンの末尾にu修飾子を付けることで、文字化けを防ぐことができます!
これによりテキストの分割が正しく行われ、差分ツールの精度も向上します。