2015.
05.
04
15:59:53
結論から書くと
1.文字エンコードの指定をUTF-8にする
2.パターンマッチの修飾子として「u」を付ける
とした上でpreg_match()を使うのが無難です。
例えば、こんなサンプルを実行するとφ(--)
こんな結果になりますφ(--)
まぁ、ぶっちゃけ、PHPのバージョンによっては、修飾子「u」が無くても動作しますし、
Shift_JISでもパッと見は動いたりしますけどね。
Shift_JISで扱うと、特定の文字コードが含まれる場合におかしな動作をします。
ですから、UTF-8で扱うのが無難です。
修飾子「u」も付けるように癖を付けておいた方が無難でしょう。
PHPのバージョン云々を気にして使い分けるよりは、うっかりミスが少ないはずです。
というわけで、正規表現によるパターンマッチで日本語が登場する場合は
1.文字エンコードをUTF-8にする
2.パターンマッチの修飾子として「u」を付ける
とした上でpreg_match()を使うのが無難です。
そんな感じ\(--)/
1.文字エンコードの指定をUTF-8にする
2.パターンマッチの修飾子として「u」を付ける
とした上でpreg_match()を使うのが無難です。
例えば、こんなサンプルを実行するとφ(--)
<?php
//対象文字列
$target = "あいうえおかきくけこさしすせそ";
//パターン
$pattern= '/うえ(.*)さし/u';
//パターンマッチ&抽出
preg_match($pattern, $target, $result);
//結果表示
var_dump($result);
?>
※PHPファイルの文字エンコード指定はUTF-8//対象文字列
$target = "あいうえおかきくけこさしすせそ";
//パターン
$pattern= '/うえ(.*)さし/u';
//パターンマッチ&抽出
preg_match($pattern, $target, $result);
//結果表示
var_dump($result);
?>
こんな結果になりますφ(--)
array(2) {
[0]=>
string(30) "うえおかきくけこさし"
[1]=>
string(18) "おかきくけこ"
}
[0]=>
string(30) "うえおかきくけこさし"
[1]=>
string(18) "おかきくけこ"
}
まぁ、ぶっちゃけ、PHPのバージョンによっては、修飾子「u」が無くても動作しますし、
Shift_JISでもパッと見は動いたりしますけどね。
Shift_JISで扱うと、特定の文字コードが含まれる場合におかしな動作をします。
ですから、UTF-8で扱うのが無難です。
修飾子「u」も付けるように癖を付けておいた方が無難でしょう。
PHPのバージョン云々を気にして使い分けるよりは、うっかりミスが少ないはずです。
というわけで、正規表現によるパターンマッチで日本語が登場する場合は
1.文字エンコードをUTF-8にする
2.パターンマッチの修飾子として「u」を付ける
とした上でpreg_match()を使うのが無難です。
そんな感じ\(--)/