سؤال
أرغب في مطابقة واستخلاص المتغيرات من: {{variable:int}}
- عامل سيكون أي شيء من الألف إلى الياء
- : هو فاصل
- إتجاه سيكون عدد صحيح 0-9
من curretly لدي: preg_replace('!\{\{(\S+)\}\}!', "$1", $string)
الذي يفعل فقط نصف الوظيفة، لا يزال يتعين علي تقسيم :
.
شكرا لك!
المحلول
إذا كنت ترغب في استخراج الاسم / القيمة، أعتقد أنك تريد استخدام Preg_Match.
preg_match('!\{\{(.*?):(\d)\}\}!', $string, $matches);
$varname = $matches[1];
$val = $matches[2];
نصائح أخرى
تحتاج إلى أ غير الجشع تطابق (.*?
): preg_replace('!\{\{(.*?):(\d)\}\}!')
يستخدم
{{([a-zA-Z]+):(\d+)}}
سيتم احتواء $ 1 على المتغير الملتقط، وسوف تحتوي $ 2 على عدد صحيح تم الاستيلاء عليها
تفسير
{{([a-zA-Z])+:(\d+)}}
A-ZA-Z] + يعني أتلست ألف أبجدية أخرى (صغيرة أو قبعات)
متبوعة ب ":"
تليها أطلس واحد أو أكثر من الأرقام (0-9)
لا تنتمي إلى StackOverflow