PDA

View Full Version : سوال: در مورد Regular-Expressions



regbyte
چهارشنبه 01 مهر 1388, 12:16 عصر
با سلام
من یه سریال دارم که از پنج قسمت تشکیل شده،
1) دو تا شش رقم به اضافه ی حرف A برای قسمت اول (ممکن است نباشد)
2) حرف Z در بعضی موارد (ممکن است نباشد)
3) دو رقم برای قسمت سوم
4) دو رقم برای سال جاری
5) یک تا چهار رقم در آخر

مثل:

43AZ158815
یا
43A15885
یا
Z158815
یا
1588125




آیا می تونم با regex قسمت آخر رو استخراج کنم؟ چگونه؟

k2-4u.com
چهارشنبه 01 مهر 1388, 13:39 عصر
بله به راحتی برای استخراج 4 رقم آخر


$str='67323456';

preg_match("/([0-9]{4})$/i",$str,$out);

echo $out[1];

regbyte
چهارشنبه 01 مهر 1388, 15:37 عصر
با تشکر، اما ظاهرا شما متوجه سوال بنده نشده اید،
قسمت پنجم ممکن است یک تا چهار کاراکتری باشد،

مثلا
در 43A15887 باید 7 را برگرداند.
در Z158872 باید 72 را برگرداند.
در 1588125 باید 125 را برگرداند.

regbyte
پنج شنبه 02 مهر 1388, 16:22 عصر
یعنی اینکار را انجام دهد:



function S ($SSS)
{
if(strlen(strpos($SSS,'Z'))!=0)
return substr($SSS,strpos($SSS,'Z')+5);
elseif(strlen(strpos($SSS,'A'))!=0)
return substr($SSS,strpos($SSS,'A')+5);
else
return substr($SSS,4);
}