プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、日本語を使った正規表現によるパターンマッチを行う
結論から書くと

1.文字エンコードの指定をUTF-8にする
2.パターンマッチの修飾子として「u」を付ける

とした上でpreg_match()を使うのが無難です。

例えば、こんなサンプルを実行するとφ(--)

<?php

//対象文字列
$target = "あいうえおかきくけこさしすせそ";

//パターン
$pattern= '/うえ(.*)さし/u';

//パターンマッチ&抽出
preg_match($pattern, $target, $result);

//結果表示
var_dump($result);
?>
※PHPファイルの文字エンコード指定はUTF-8

こんな結果になりますφ(--)

array(2) {
  [0]=>
  string(30) "うえおかきくけこさし"
  [1]=>
  string(18) "おかきくけこ"
}

まぁ、ぶっちゃけ、PHPのバージョンによっては、修飾子「u」が無くても動作しますし、
Shift_JISでもパッと見は動いたりしますけどね。

Shift_JISで扱うと、特定の文字コードが含まれる場合におかしな動作をします。
ですから、UTF-8で扱うのが無難です。

修飾子「u」も付けるように癖を付けておいた方が無難でしょう。
PHPのバージョン云々を気にして使い分けるよりは、うっかりミスが少ないはずです。

というわけで、正規表現によるパターンマッチで日本語が登場する場合は

1.文字エンコードをUTF-8にする
2.パターンマッチの修飾子として「u」を付ける

とした上でpreg_match()を使うのが無難です。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事