[Perl互換の正規表現(複数置換)]

---------------------------実行結果-----------------------
◆置換前の文字列=日本語アカサタナを含む文字列の検索
◆置換後の文字列=英語abcdeを除く文字列の検索

---------------------------スクリプト---------------------
$moji = '日本語アカサタナを含む文字列の検索'; // テスト用文字列SJIS
$moji0 = $moji;
$match = '(日本)語(アカサタナ)を(含む)文字列の検索'; // 置換対象文字列
mb_convert_encoding($moji,'UTF-8','EUC-JP'); // 文字エンコーディング
mb_convert_encoding($match,'UTF-8','EUC-JP'); // 文字エンコーディング
function call_back($sub){
$sub[1] = '英';
$sub[2] = 'abcde';
$sub[3] = '除く';
mb_convert_encoding($sub[1],'UTF-8','EUC-JP'); // 文字エンコーディング
mb_convert_encoding($sub[2],'UTF-8','EUC-JP'); // 文字エンコーディング
mb_convert_encoding($sub[3],'UTF-8','EUC-JP'); // 文字エンコーディング
return $sub[1].'語'.$sub[2].'を'.$sub[3].'文字列の検索';
}
$moji = preg_replace_callback('/'.$match.'/',call_back,$moji); //
mb_convert_encoding($moji,'EUC-JP','UTF-8'); // 文字エンコーディングを戻す
echo '◆置換前の文字列='.$moji0.'';
echo '◆置換後の文字列='.$moji.'';
----------------------------------------------------------