1

私はこれが何をするか知っていますが、誰かがこの文字列の PHP での正規表現構文を説明してくれませんか?

if (preg_match("/(?:iPhone|Android.*Mobile)/", $user_agent) > 0) {

ユーザーエージェント文字列でiPhoneまたはAndroidが見つかることはわかっています。これが私が探しているものです。

? means what - beginning of string?
: means what - characters leading up to the search phrase?
.*Mobile means it will only match iPhone blah blah Mobile or Android blah blah Mobile?

もう 1 つ質問があります。一致を示すために " > 0" が必要ですか、それとも単に "if" 式を使用できますか?

ありがとうございました。

4

1 に答える 1

3

(?: ... )非キャプチャ グループです。

.「ワイルドカード」であり、改行以外の任意の文字に一致します。*量指定子であり、0 回以上を表します。.*任意の文字を 0 回以上意味します。

(?:iPhone|Android.*Mobile)iPhone または(これが の|目的です)Androidのいずれかを意味Mobileし、2 つの単語の間に任意の数の文字が含まれます。

この正規表現では、非キャプチャ グループは実際には必要なく、次のように記述されていても機能します。

if (preg_match("/iPhone|Android.*Mobile/", $user_agent) > 0) {

編集:ああ、その> 0部分も必要ないことを忘れていました。preg_matchによってブール値として扱われる 0 または 1 が既に返されていifます。

于 2013-09-09T05:38:34.567 に答える