• 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تابع eregi کارکتر های فارسی
#1
چطوری میشه با تابع eregi چک کرد که کارکتر های وارد شده فارسی هستند ؟

اگه این تابع برای چک کارکترهای فارسی درست نیست راه صحیح برای اینکار چیه ؟
  پاسخ
تشکر شده توسط :
#2
http://www.regular-expressions.info/php.html
A special option is the /u which turns on the Unicode matching mode, instead of the default 8-bit matching mode. You should specify /u for regular expressions that use \x{FFFF}, \X or \p{L} to match Unicode characters, graphemes, properties or scripts. PHP will interpret '/regex/u' as a UTF-8 string rather than as an ASCII string.

http://ir.php.net/manual/en/function.mb-ereg.php
  پاسخ
تشکر شده توسط : php php
#3
وحید خیلی باهاش ور رفتم ولی نتونستم به کارش ببرم . میشه خودت یه نمونه بزاری .
  پاسخ
تشکر شده توسط :
#4
(۱۳۸۸ مرداد ۰۵, ۱۱:۲۲ ق.ظ)php نوشته: وحید خیلی باهاش ور رفتم ولی نتونستم به کارش ببرم . میشه خودت یه نمونه بزاری .

می خوای چی کار کنی؟ دقیق بگو
  پاسخ
تشکر شده توسط :
#5
نقل قول:چطوری میشه با تابع eregi چک کرد که کارکتر های وارد شده فارسی هستند ؟



کد پی‌اچ‌پی:
if(preg_match('~$[آابپتثجچحخدذرزژسشصضطظعقفقکگلمنوهیي]*^~'$str$match))
{
...

Two hands working can do more than a thousand clasped in prayer
  پاسخ
تشکر شده توسط : Y.P.Y php
#6
سلام،
نقل قول:چطوری میشه با تابع eregi چک کرد که کارکتر های وارد شده فارسی هستند؟
اگه این تابع برای چک کارکترهای فارسی درست نیست راه صحیح برای اینکار چیه؟
اول اینکه از توابع eregi یا کلاً Regular expression برای کار با رشته های Unicode/UTF-8 استفاده نمی کنن(جواب نمیده)، بجاش ازMultibyte regular expression استفاده می کنن(لینک وحید).
دوم اینکه چک/Match کردن رشته های Unicode بوسیله فقط(Pure) قواعد کار صحیحی نیست(دقت و ایمنی) و به این راحتی ها هم نیست(صدها کاراکتر UTF-8/Unicode داریم)!

می تونی از این PHPUTF8 استفاده کنی، کامل و قدرتمند.
هم میتونی از خودش استفاده کنی، هم از Pattern هاش.
مو هم لای درزش نمیره Smile


فایل‌های پیوست
.zip   phputf8.zip (اندازه 28.54 KB / تعداد دانلود: 81)
وبلاگ: Yousha.Blog.ir


کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بیشتر => نگهداری بهتر
  پاسخ
تشکر شده توسط : zoghal amir.s php oia cyletech
#7
البته ایشون میخواد چک کنه که فارسی باشه ورودی نه UTF-8، فارسی هم که ۳۲ حرفه + یا عربی و الف کلا دار. :دی
Two hands working can do more than a thousand clasped in prayer
  پاسخ
تشکر شده توسط :
#8
نقل قول:فارسی هم که ۳۲ حرفه + یا عربی و الف کلا دار. :دی
عزیز فارسی جزو دسته UTF-8، و UTF-8 جزو/کنار دسته کلی Unicode ها هستش.
UTF-8 هم شامل:
Alphabetic(در فارسی همون آابپتثجچحخدذرزژسشصضطظعقفقکگلمنوهیي شما)
Numeric
non-alphanum/Special
ASCII, 7/Bad bytes, ...
هستش...
پس با یک preg_match ساده اینکار امکان پذیر(صحیح) نیست! توابع Multibyte هم برای همین کار درست شدن.
بهتره لیست Character encoding هایی که Multibyte پشتیبانی می کنه رو ببینید.
وبلاگ: Yousha.Blog.ir


کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بیشتر => نگهداری بهتر
  پاسخ
تشکر شده توسط :
#9
دوستان عزیز اگر می‌شه در این سوال من رو راهنمایی کنید
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان