سؤال

ويبدو لي أن الخلط بين نفسي مع التعابير المنطقية preg_match أفعله، سيكون موضع تقدير العينين حتى الطازجة والمساعدة.

وبلدي التعابير المنطقية الحالي هو كما يلي:

/<!--menu:start:\(([0-9])\,([0-9])\)-->(.*?)<!--menu:end-->/se

وأنا أتطلع لجعل إدخال رقم والقولون مثلا : (1،4) اختياري، لذلك سيكون مطابقة:

<!--menu:start--><!--menu:end-->

أو

<!--menu:start:(0,3)--><!--menu:end-->
هل كانت مفيدة؟

المحلول

وأرفق مع مجموعة غير مطابقة وتعيينها لاختياري: (?:...)?

/<!--menu:start(?::\(([0-9])\,([0-9])\))?-->(.*?)<!--menu:end-->/se

نصائح أخرى

ومثل هذا:

/<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se

ولقد إضافة مجموعة غير الالتقاط، (?: )، حول الجزء الذي تريد أن تكون اختيارية، ومن ثم suffixed مع علامة استفهام: (?:<optional content>)?

وهذا يستخدم غير التقاط مجموعة اختيارية - (?: )? - لمطابقة جزء اختياري الخاص بك، وأيضا \d بدلا من [0-9] لمطابقة الأرقام:

/<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se

إذا الأرقام بين قوسين يمكن أن تتكون من أكثر من رقم واحد، واستخدام هذه واحدة بدلا من ذلك:

/<!--menu:start(?::\((\d+),(\d+)\))?-->(.*?)<!--menu:end-->/se
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top