文字列の一致、ereg、pregなど、正規表現について。
正規表現の修飾子(Perl版) ・修飾子 g:一致するものを全て探す o:1回だけ一致するものを探す i:大文字小文字の区別なし s:文字列を1行とみなす m:文字列を複数行とみなす e:文字列を式とみなす x:拡張正規表現(空白が無効) ・メタ文字 .:任意の1文字 *:直前パターン0回以上繰り返し +:直前パターン1回以上繰り返し ?:直前パターン0または1回以上繰り返し ^:文字列の先頭([]内で使った場合、~以外になる) $:文字列の最後 \:エスケープ(/などをエスケープするときに使う) |:論理和 \d:数字。[0-9] \D:数字以外。[^0-9] \w:英数字。[_a-zA-Z0-9] \W:英数字以外。[^_a-zA-Z0-9] \s:空白。[ \t\n\r\f] \S:空白以外。[^ \t\n\r\f] \A:文字列の先頭。^と同じ。 \Z:文字列の最後。$と同じ。または\z。 -:[]内で範囲を示す。 正規表現 ・pregはPerl互換、eregはPOSIX拡張(廃止) ・URLチェック ・preg 正規表現の両端をスラッシュで囲む if(preg_match("/^https?:\/\/[\w-.!~*'\" ();\/?:@&=+\$,%\#]+/", $url)) //一致 }else{ //不一致 } 文字列を抜き出す(抽出) ・preg_match(正規表現, 対象の文字列, [結果], [フラグ]) ・preg_replace(正規表現, マッチした部分の置換後の文字, 対象の文字列, [回数]) ・携帯電話の固体識別情報を抜き出す //$useragent = "DoCoMo/1.0/X503i/c10/ser12345678901"; //$useragent = "DoCoMo/2.0 N901iS(c100;TB;W24H12;)"; //$useragent = "DoCoMo/2.0 N901iS(c100;TB;W24H12;ser123456789012345;icc12345678901234567890)"; //例1 $result = preg_match("/^.+ser([0-9a-zA-Z]+).*$/", $useragent, $match); $id = $match[1]; //例2 $id = preg_replace("/^(.+ser)([0-9a-zA-Z]+)(.*)$/", "$2", $useragent); 全角文字の判定 ・mb_ereg_match(正規表現, 変数, [オプション]) $test = "東京都港区"; if(mb_ereg_match("^東京", $test)){ }