0

phpBB フォーラムの memberlist.php には、ボードのすべてのメンバーが次の HTML で一覧表示されます。

<a href="profile.php?mode=viewprofile&amp;u=4">Username</a>

u=4 はユーザーの UserID であり、Username は明らかにユーザー名です。

このような HTML はおそらく 50 ~ 100 個あり、それらすべてを一致させたいので、preg_match_all.

これは私が得たものです:

preg_match_all('/<a href="profile\.php?mode=viewprofile&amp;u=/d">(.*?)</a>/', $page, $usrname, PREG_PATTERN_ORDER);

しかし、それはこのエラーを返します:

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 'd' in C:\xampp\htdocs\index.php on line 38

preg_match_allユーザー名を一致させるために関数で使用する正規表現を教えてもらえますか? u=4リンクの一部が変更されることに注意してください:)

乾杯。

4

4 に答える 4

2

\d代わりに使用する必要があります/d

/d は、修飾子を使用しようとしています (大文字と小文字を区別しないための /i など)

\d は、0 ~ 9 の数字を意味する文字クラスです。

これはうまくいくはずです:

preg_match_all('/<a href="profile\.php\?mode=viewprofile&amp;u=\d+">(.*?)<\/a>/', $page, $usrname, PREG_PATTERN_ORDER);
于 2010-01-01T20:52:12.710 に答える
0

\d は /d の代わりに必要なものです

于 2010-01-01T20:53:02.987 に答える
0

/d の代わりに \d を使用すると、? もエスケープする必要があります。クエリ文字列の先頭

于 2010-01-01T20:56:27.287 に答える
0

使用する

preg_match_all('%<a href="profile\.php\?mode=viewprofile&amp;u=\d+">(.*?)</a>%', $page, $usrname, PREG_PATTERN_ORDER);

\d+の代わりに使用/dします (これは構文エラーです)。1 桁以上を許可するためです (10 人以上の+ユーザーがいると思いますよね)。または?、「前の文字/式が 0 回または 1 回出現する」ことを意味します。正規表現にスラッシュがあるため、区切り記号として使用できないため、%代わりにパーセント記号を使用しました。

于 2010-01-01T21:01:12.643 に答える