مطابقة أسماء المستخدمين في قائمة الأعضاء باستخدام Regex

StackOverflow https://stackoverflow.com/questions/1989600

  •  22-09-2019
  •  | 
  •  

سؤال

في منتدى PHPBB ، يسرد MemberList.php جميع أعضاء المجلس مع HTML التالية:

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

حيث u = 4 هو معرف المستخدم للمستخدم ، ومن الواضح أن اسم المستخدم هو اسم المستخدم الخاص بهم.

من المحتمل أن يكون هناك 50-100 peices من HTML مثل هذا وأود أن أقابلهم جميعًا ، لذلك كنت سأستخدم 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

هل يمكن لأي شخص أن يخبرني regex لاستخدامه في preg_match_all تعمل لمطابقة أسماء المستخدمين؟ مع الأخذ في الاعتبار u=4 سيتغير جزء من الرابط :)

هتافات.

هل كانت مفيدة؟

المحلول

يجب أن تستخدم \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);

نصائح أخرى

D هو ما تحتاجه بدلاً من /د

d بدلاً من /d ، ستحتاج أيضًا إلى الهروب من؟ في بداية سلسلة الاستعلام

يستخدم

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

يستخدم \d+ بدلاً من /d (وهو خطأ في بناء الجملة). ال + هو السماح لأكثر من رقم واحد (أعتقد أنه سيكون لديك أكثر من 10 مستخدمين ، أليس كذلك)؟ الهروب أيضا ?, ، أو يعني "صفر أو حدث واحد للشخصية/التعبير السابق. نظرًا لأن لديك مائلًا في Regex ، لا يمكنك استخدامه كحدد ، لذلك استخدمت علامة النسبة المئوية % في حين أن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top