PDA

View Full Version : سوال در مورد تابع preg_match



Kingali
دوشنبه 27 مهر 1388, 10:24 صبح
سلام

میخواستم ببینم با تابع preg_match میشه مثلا چندتا ایمیل رو که توی یک string بصورت نامنظم ( ali@yahoo.com ';sada...8s98d kingali@gmail.com ... ) هستن رو جدا کنیم و همه رو بریزیم تو یه آرایه؟ اگه ممکنه کدش رو هم لطف کنید بنویسید.:چشمک:
من هرکار کردم فقط اولی رو میریزه...

ممنون

metal gear solid 4
سه شنبه 03 آذر 1388, 22:38 عصر
if (ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $email)) {

echo 'email ok';

} else {

echo 'email not ok';

}


یک سری هم به این لینک بزن خودت یاد بگیر حکومت کن !!!! توی برنامت....

http://www.smashingmagazine.com/2009/06/01/essential-guide-to-regular-expressions-tools-tutorials-and-resources/

metal gear solid 4
چهارشنبه 04 آذر 1388, 11:20 صبح
سلام
من هیچی از این preg بلد نبودم ولی با خوندن صفحه ی بالا یه چیزایی یاد گرفتم. اما این کدی که نوشتم چیزی که من میخوام رو انجام نمیده.
میخوام نام کاربری شامل تمامی حروف بزرگ و کوچک انگلیسی باشه - فقط با حروف شروع شه - طولش بیشتر از 5 و کمتر از 25 باشه. - شامل کاراکتر های زیر هم باشه , . ? $ ' _ و دیگر هیچ....




$string =array("k5324-4324","ali","mohammad_.,?","5bename_khoda","Modern warfare , . ? $");
for($i=0;$i<count($string);$i++)
if (preg_match('/^[A-Za-z][A-Za-z0-9\,\.\? _]{5,25}/', $string[$i]))
echo "$string[$i] This username is valid.<br />";
else
echo "$string[$i] INVALID<br />";

!!!!! دوستان میشه بگین این کد کجاش مشکل داره؟


خروجی بالا اینه :


k5324-4324 INVALID
ali INVALID
mohammad_.,? This username is valid.
5bename_khoda INVALID
Modern warfare , . ? $ This username is valid.

eAmin
چهارشنبه 04 آذر 1388, 20:44 عصر
سلام.

بنده regexp شما رو به اینصورت تغییر دادم، البته از شما هم هیچ مشکلی نداشت و خیلی خوب کار می کرد.

$string =array("k5324-4324","ali","mohammad_.,?","5bename_khoda","Modern warfare , . ? $");
for($i=0;$i<count($string);$i++)
if (preg_match('/^[a-z][a-z0-9\,\.\? \-_]{5,25}/i', $string[$i]))
echo "$string[$i] This username is valid.<br />";
else
echo "$string[$i] INVALID<br />";

شاید شما می خواستید که یوزری با این نام: k5324-4324 هم بتونه ثبت نام کنه ولی در pattern شما ه علت اینکه کاراکتر - ( Dash ) رو جا انداخته بودید جواب نمی داد.

موفق باشید.

metal gear solid 4
شنبه 07 آذر 1388, 21:06 عصر
خیلی خیلی خیلی ممنون ولی این کدی که شما تصحیحش کردید یک رشته ی 50 کاراکتری هم بدید خروجی this username is valid بر میگردونه در صورتی که توی کد نوشتم بین 5 تا 25 !!!!!