人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

http://q.hatena.ne.jp/1356920258
の質問の続きです。

お手数おかけしてすいません。
oil999 さんに教えていただいた

//検索
preg_match_all("/(かきくけこ).*?([男女])/umsi", $str, $arr, PREG_SET_ORDER);

の部分の
「umsi」がよくわかりません。
質問が漠然としていてすいません。
正規表現の何かだと思うのですが、説明していただけると助かります。

●質問者: kohhi
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● a-kuma3
●33ポイント

「umsi」がよくわかりません。

正規表現のパターン修飾子と言って、正規表現の動作などを指定します。
それぞれの文字、ひとつひとつに機能があって、順番を変えても大丈夫です。


以下、マニュアルからの引用です。
http://php.net/manual/ja/reference.pcre.pattern.modifiers.php

i (PCRE_CASELESS)
この修飾子を設定すると、パターンの中の文字は 大文字にも小文字にもマッチします。

m (PCRE_MULTILINE)
デフォルトで、PCRE は、検索対象文字列を(実際には複数行からなる 場合でも)単一の行からなるとして処理します。 「行頭」メタ文字 (^) は、対象文字列の最初にしかマッチしません。 一方、「行末」メタ文字 ($) は、文字列の最後、または (D 修飾子が設定されていない場合) 最後にある改行記号の前のみにしかマッチしません。 この動作は Perl と同じです。 この修飾子を設定すると、「行頭」および「行末」メタ文字は 対象文字列において、文字列の最初と最後に加えて、 各改行の直前と直後にそれぞれマッチします。 この動作は、Perl の /m 修飾子と同じです。 対象文字列の中に "\n" 文字がない場合や、 またはパターンに ^ または $ がない場合は、 この修飾子を設定しても意味はありません。

s (PCRE_DOTALL)
この修飾子を設定すると、パターン中のドットメタ文字は 改行を含む全ての文字にマッチします。 これを設定しない場合は、改行にはマッチしません。 この修飾子は、Perl の /s 修飾子と同じです。 [^a] のような否定の文字クラスは、 この修飾子の設定によらず、常に改行文字にマッチします。

u (PCRE_UTF8)
この修正子は、Perl 非互換な PCRE の機能を有効にします。パターン 文字列は、UTF-8 エンコードされた文字列として処理されます。 この修正子は、UNIX では PHP 4.1.0 以降、Win32 では PHP 4.2.3 以降で 使用可能です。 また、PHP 4.3.5 以降では、パターンの UTF-8 としての妥当性も確認されます。


kohhiさんのコメント
早速回答ありがとうございました。

2 ● oil999
●34ポイント ベストアンサー

パターン修飾子といって、"/.../"の中の正規表現を修飾するものです。
アルファベット1文字ずつに意味があり、アルファベットの順序は関係ありません。

u
正規表現と対象文字列がutf-8であることを示します。

m
デフォルトでは正規表現は1行にしかマッチしませんが、これを複数行にマッチするようにします。

s
改行文字にマッチするようにします。mとセットで用います。

i
大文字と小文字を区別しません。ご質問の場合、これは付けても付けなくても構いません。

kohhiさんのコメント
いつもありがとうございます。

3 ● pretaroe
●33ポイント

正規表現の動作を指定するオプションです
・Unicode対応 (u)
・大文字小文字を区別しない (i)
・空白を無視する (x)
・マルチラインモード (m)
・改行を通常文字とみなす (p)


PHP正規表現チェッカー ver1.0.3
http://www.rider-n.sakura.ne.jp/regexp/regexp.php

このあたりで動作確認すればよくわかると思いますし、
またオプションなども見ればすぐわかります。


kohhiさんのコメント
早速回答ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ