PDA

View Full Version : حرفه ای: Regular Expression با قابلیت ساپورت حروف ایرانی



alex_salem
دوشنبه 16 تیر 1393, 22:37 عصر
سلام

من یک فیلدی دارم که هر چیزی می تونه باشه مثل موارد زیر
¶¶Alex○♂
Alex☻☻
■■الکس123■■
1
س
A
من می خواهم کاربران بتوانند هر حرفی را می خواهند وارد کنند فقط تعداد کاراکتر از یک باشد و حداقل یک کاراکتر حرف یا عدد فارسی و انگلیسی را شامل شود.
منظور واسه چیه چون من این را در کد HTML اکو می کنم

<a href="#">echo $var;</a>

حالا اگر مثلاً کاربر همزمان دکمه ALT را نگه دارد و عدد 255 تایپ کند یک چیزی مانند فاصله می افتد با توجه به اینکه این فاصله با اسپیس فرق دارد اما کد href دیگر کار نمی کند چون چیزی برای نمایش ندارد. حالا به دنبال این هستم که حداقل یک حرف یا یک عدد فارسی و انگلیسی را در نام شهر خود وارد کند.

اما Regular expression خاصی در این رابطه بلد نیستم ممنون می شم استادان گرامی راهنمایی کنن.

MMSHFE
سه شنبه 17 تیر 1393, 09:37 صبح
حروف فارسی رو مستقیماً بنویسید و از سوئیچ u استفاده کنید. مثال:

if(preg_match('#[a-zآابپتثجچحخدذرزژسشصضطظعغف کگلمنوهی0-9#u', $str)) {
// ok
}

alex_salem
سه شنبه 17 تیر 1393, 18:41 عصر
سلام

ممنون اما این چیزی که من دیدم شامل کاراکترهای ویژه نمی شود این فقط می گوید این موارد مجاز است.
من به این نیاز دارم که بگم یکی از این موارد حتماً بایستی شامل آن شود چون کاراکترهای ■☻• و ... را شامل نمی شود و تعداد این ها هم زیاد است نمی توانم راستش خودم نتونستم این regex رو یاد بگیرم. بخاطر همین اگر امکانش هست همینو که به من دادید لطفاً با چیزی که مورد نیازم اصلاح بفرمایید.

alibehroozi
سه شنبه 17 تیر 1393, 23:58 عصر
خوب به چه کاراکتر هایی نیاز ندارید که از عبارات با قائده استفاده میکنید ؟

alex_salem
چهارشنبه 18 تیر 1393, 01:36 صبح
خوب به چه کاراکتر هایی نیاز ندارید که از عبارات با قائده استفاده میکنید ؟

خوب بالاتر تو پست اول و پست دومم توضیح دادم
هر کاراکتری مجاز است فقط اینکه حداقل یک عدد یا حرف چه فارسی چه انگلیسی حتماً داخل متن باشه.

alibehroozi
چهارشنبه 18 تیر 1393, 01:52 صبح
خوب نیاز این کار نیست
کافیست تمام حروف رو بررسی کنید و یک متغیر هم از حروف انگلیسی فارسی درست کنید
حالا همه حروف رشته مورد نظر رو توی اون متغیر جستجو کنید و اگر حتی یک باز جستجو نتیجه داد یک متغیر را true کنید
با3 خط میتوانید اینو بنویسید و از عبارات سخت عبارات با قائده نیاز نیست استفاده کنید
موفق باشید

MMSHFE
چهارشنبه 18 تیر 1393, 11:28 صبح
این کد اگه چیزی بجز کارکترهای فوق توی متن نباشه، مقدار true به شرط خواهد داد.

if(!preg_match('#[^0-9a-zآابپتثجچحخدذرزژسشصضطظعغف کگلمنوهی#u', $str)) {
// OK
}

foreach
چهارشنبه 18 تیر 1393, 11:42 صبح
اینطور که من فهمیدم شما میخوای حداقل یک عدد یا یک حرف حتما تو رشته تون باشه



<?php

$str = '@■■s';

if(preg_match('#(?=.*[a-z0-9-آابپتثجچحخدذرزژسشصضطظعغفق کگلمنوهی])#u', $str)) echo 'ok';