مطابقة أسماء المستخدمين في قائمة الأعضاء باستخدام Regex
-
22-09-2019 - |
سؤال
في منتدى PHPBB ، يسرد MemberList.php جميع أعضاء المجلس مع HTML التالية:
<a href="profile.php?mode=viewprofile&u=4">Username</a>
حيث u = 4 هو معرف المستخدم للمستخدم ، ومن الواضح أن اسم المستخدم هو اسم المستخدم الخاص بهم.
من المحتمل أن يكون هناك 50-100 peices من HTML مثل هذا وأود أن أقابلهم جميعًا ، لذلك كنت سأستخدم preg_match_all
.
هذا ما حصلت عليه:
preg_match_all('/<a href="profile\.php?mode=viewprofile&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&u=\d+">(.*?)<\/a>/', $page, $usrname, PREG_PATTERN_ORDER);
نصائح أخرى
D هو ما تحتاجه بدلاً من /د
d بدلاً من /d ، ستحتاج أيضًا إلى الهروب من؟ في بداية سلسلة الاستعلام
يستخدم
preg_match_all('%<a href="profile\.php\?mode=viewprofile&u=\d+">(.*?)</a>%', $page, $usrname, PREG_PATTERN_ORDER);
يستخدم \d+
بدلاً من /d
(وهو خطأ في بناء الجملة). ال +
هو السماح لأكثر من رقم واحد (أعتقد أنه سيكون لديك أكثر من 10 مستخدمين ، أليس كذلك)؟ الهروب أيضا ?
, ، أو يعني "صفر أو حدث واحد للشخصية/التعبير السابق. نظرًا لأن لديك مائلًا في Regex ، لا يمكنك استخدامه كحدد ، لذلك استخدمت علامة النسبة المئوية %
في حين أن.