http://q.hatena.ne.jp/1356920258

の質問の続きです。

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

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/01/18 11:55:04
  • 終了:2013/01/20 21:57:56

ベストアンサー

id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202013/01/18 15:04:30

ポイント34pt

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

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

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

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

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

いつもありがとうございます。

2013/01/20 21:57:32

その他の回答(2件)

id:a-kuma3 No.1

a-kuma3回答回数4363ベストアンサー獲得回数18002013/01/18 12:27:06

ポイント33pt

「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 としての妥当性も確認されます。

id:kohhi

早速回答ありがとうございました。

2013/01/20 21:57:11
id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202013/01/18 15:04:30ここでベストアンサー

ポイント34pt

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

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

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

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

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

いつもありがとうございます。

2013/01/20 21:57:32
id:pretaroe No.3

pretaroe回答回数531ベストアンサー獲得回数752013/01/19 12:16:51

ポイント33pt

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


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

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

id:kohhi

早速回答ありがとうございました。

2013/01/20 21:57:16

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません