preg_match regex مساعدة
-
19-09-2019 - |
سؤال
مرحبا، أحتاج إلى بعض المساعدة.
هنا هو رمز Preg_Match الحالي:
preg_match("/(\/)([0-9]+)(\/?)$/", $_SERVER["REQUEST_URI"], $m);
التي تفعل وظيفة جيدة في الكشف عن post_id
في سلسلة URI التالية:
http://www.example.com/health-and-fitness-tips/999/
أعتقد أنه يجب أن يكون خلفية كافية.
أنا أغير 999
, ، ال post_id
, ، ل how-do-I-lose-10kg-in-12-weeks', the
Post_title`، وتحتاج إلى تغيير Pre_Match Regex للكشف عن السلسلة الجديدة.
كان من الفكر الأول هو إضافة [AZ] - إلى نهاية Regex مما يجعل Regex التالية:
"/(\/)([0-9][a-z]/-+)(\/?)$/"
ربما هذا بسيط؟ إذا لم يكن الأمر كذلك، فما الخطأ في ما ورد أعلاه؟
المحلول
ليس تماما: ([0-9][a-z]/-+)
هو "عدد، تليها خطاب، تليها اندفاعة واحدة على الأقل."
انت تريد ([-0-9a-z]+)
.
نصائح أخرى
أود فقط استخدام \w
:
preg_match('!/([-\w]+)/?$!', $_SERVER['REQUEST_URI'], $m);
من فئات الأحرف أو مجموعات الأحرف:
\w
يقف ل "حرف كلمة"، وعادة[A-Za-z0-9_]
. وبعد لاحظ إدراج السفل والأرقام.
\w
تقف للكلمة، يمكن أن تكون حرفا كلا الحالة العلوية والحالة الأدنى A إلى z و z، رقم 0 إلى 9 أو _. لا يعادل [A-Za-z0-9_]
. وبعد يمكنك اختبار في اختبار الانترنت هنا.