文中で使用されたpreg_repalceだが、マルチバイト文字を扱う場合は注意が必要だ。UTF-8でpreg_replaceを使用する場合は、パターン修飾子に"u"を指定すること。

preg.php

<?php
$text = <<< EOF
マイコミジャーナルは、信頼と革新を旨とする総合ニュースサイトです。
インターネットが社会で使われ始めた 1997年秋に、その前身となる媒体を創刊、その後、一貫して読者の信頼を勝ち得る努力を重ねて参りました。
現在も日々、読者の皆様からの信頼が得られるよう、情報の正確さ、的確な情報の選択と内容の吟味に努力しております。
毎日の情報収集にお役立て頂きたく、ご愛読のほど宜しくお願い申し上げます。
EOF;
$pattern = '/[ア-ン|ー*]/u';
$replacement = '<span style="background-color: #ff9999">$0</span>';
echo preg_replace($pattern, $replacement, $text);
?>

このサンプルの場合、パターン修飾子に"u"が指定されていないので文字化けを起こす。

pregでマルチバイト文字を扱う場合、パターン修飾子に"u"を指定しないと文字化けを起こす(左)。文字コードがUTF-8の場合、修飾子を指定することで文字化けを回避できる

UTF-8以外の文字コードで正規表現を使う場合は、mb_ereg系の関数を利用する。

文字列を操作するにあたり、正規表現は必須のテクニックと言える。一部のエディタでは正規表現による文字列置換をサポートしており、記法をマスターしているのとしていないとでは、プログラミング効率にもかなりの差が出る。自分の用途にあったパターンをコピペして使うだけではなく、各種ドキュメントを熟読・試行錯誤をして自分のものにしておきたいところだ。正規表現に関するチュートリアルやチートシートをまとめたものが「正規表現まとめサイト」として掲載されているので、こちらもぜひ参照されたい。