PDA

View Full Version : سوال: مشکل در نوشتن الگو برای تشخیص تگ از طریق preg match



alismith
دوشنبه 23 فروردین 1395, 10:10 صبح
سلام

من دو عدد تگ دارم و با الگویی که نوشتم اگر از هر دو تگ همزمان استفاده شود الگو تگ ها را با هم به اشتباه بر میگرداند


{{a_b}} {a} // Content.. {/a}
$ptrn = '/\{\s*a[^}]*\}(.*)\{\s*\/\s*a\s*\}/siU';

مثلا الگو برای تشخیص این تگ درست عمل میکند :


{a} // Content.. {/a}

اما اگر به این شکل هر دو تگ با هم نوشته شود :



{{a_b}} {a} // Content.. {/a}

الگو به اشتباه چنین چیزی را بر میگرداند :


{a_b}} {a} // Content.. {/a}

میدونید چجوری باید pattern تغییر بدم تا درست عمل کنه در تشخیص تگ مورد نظر؟

تو استک کسی جواب نداد http://stackoverflow.com/questions/36541975/wrong-pattern-on-identifying-the-tag-in-preg-match


با تشکر

H:Shojaei
دوشنبه 23 فروردین 1395, 10:59 صبح
به این تغییرش بدین ببینید میشه؟
$ptrn = '/\{\s*a[^}]{*\}(.*)\{\s*\/\s*a\s*\}/siU';

alismith
دوشنبه 23 فروردین 1395, 11:14 صبح
به این تغییرش بدین ببینید میشه؟
$ptrn = '/\{\s*a[^}]{*\}(.*)\{\s*\/\s*a\s*\}/siU';


نه هیچ فرقی نکرد، البته $ آخر الگو قرار میدن.

H:Shojaei
دوشنبه 23 فروردین 1395, 11:16 صبح
نمونه کد با مثال رو بذارید بهتر بشه راهنمایی و تست کرد!

alismith
دوشنبه 23 فروردین 1395, 11:38 صبح
نمونه کد با مثال رو بذارید بهتر بشه راهنمایی و تست کرد!



$str ='{{a_b}} {a} // Content.. {/a}';$ptrn = '/\{\s*a[^}]\{*\}(.*)\{\s*\/\s*a\s*\}$/siU';preg_match_all($ptrn,$str,$match);