View Full Version : کمک برای preg_replace برای زبان فارسی
mamali-mohammad
چهارشنبه 21 دی 1390, 02:15 صبح
سلام
من این کد رو استفاده می کنم :
preg_replace('#[^A-Za-z-0-9]#i','',$_GET['id']);
این برای زبان انگلیسی خوبه
اما اگه مقدار دریافتی فارسی باشه دیگه جواب نمیده
چه کنم ؟
ممنون
امیـرحسین
چهارشنبه 21 دی 1390, 10:26 صبح
Regular Expression قابلیت چک کردن کدهای یونیکد رو داره و برای پیدا کردن کاراکترهای فارسی باید از کد یونیکدشون استفاده شه و البته میشه براش بازه هم تعریف کرد. نمونه:
$str = 'aaaسلامbbbسلامcccسلامddd';
$a = preg_replace('@[^\x{0600}-\x{06FF}]@u', '-', $str);
echo $a; // ---سلام---سلام---سلام---
این بازه که من استفاده کردم Arabic بود. فارسی دقیق توی چند تا بازه است! توی این صفحه میتونید بازهها رو ببینید و بهترین بازه رو استفاده کنید: Unicode Character Ranges (http://jrgraphix.net/research/unicode_blocks.php)
mamali-mohammad
چهارشنبه 21 دی 1390, 12:21 عصر
ممنون
اما تو این لیست برای زبان فارسی چیزی نبود
امیـرحسین
چهارشنبه 21 دی 1390, 14:45 عصر
اون Arabic شامل همهی کاراکترهای اون مدلیه یعنی گچ پژ هم توش هست و در واقع فارسی کامل توش هست اما برای این میگم فارسی تو چند تا بازه است چون مثلا تو بعضی بازههای دیگه هم حروف فارسی پیدا میشه و تو همون بازه کلی کاراکتر هست که اصلا فارسی نیست و باید از بازه حذف شه ولی در حالت کلی همین بازهای که تو مثال من بود کافیه...
mamali-mohammad
چهارشنبه 21 دی 1390, 15:23 عصر
میشه همین کد خودتون رو با کد من ترکیب کنید بدید ؟
preg_replace('#[^A-Za-z-0-9]#i','',$_GET['id']);
ممنون
mamali-mohammad
چهارشنبه 21 دی 1390, 18:58 عصر
داداش یه کمکی کن
ممنون
tux-world
چهارشنبه 21 دی 1390, 19:09 عصر
داداش یه کمکی کن
ممنون
عزیزم امیر حسین بهت لینک مستقیم داده برنامه خودتون هستش . بهتره خودتون هم یه تلاشی بکنید
mamali-mohammad
چهارشنبه 21 دی 1390, 19:19 عصر
من تلاش کردم نتونستم
tem988
چهارشنبه 21 دی 1390, 22:06 عصر
سلام
از این کد استفاده کن من قبلا کلی دنبالش گشتم ولی بلاخره خودم درستش کردم
ereg_replace("[^_؟?A-Za-z0-9 \ا\ب\پ\ت\ث\ج\چ\ح\خ\د\ذ\ر\ز\ژ\س\ش\ \ض\ط\ظ\ع\غ\ف\ق\ک\گ\ل\م\ن\و\ه\ی\ك\ آ\ي\ئ\_\]", "", $str);
ereg_replace("[^_؟?A-Za-z0-9 \ا\ب\پ\ت\ث\ج\چ\ح\خ\د\ذ\ر\ز\ژ\س\ش\ \ض\ط\ظ\ع\غ\ف\ق\ک\گ\ل\م\ن\و\ه\ی\ك\ آ\ي\ئ\_\]", "", $str);
اگر بخوای انگلیسی جایگزین بشه از توی تابع حذفشون کن و بر عکس
armin3000
سه شنبه 20 تیر 1391, 18:07 عصر
دوستان منم فکر کنم مشکلی مشابه همین سوال رو دارم. تابع truncate رو می خوام استفاده کنم اما توی شمارش حروف و کاراکترهای فارسی مشکل داره و درست عدد رو برنمیگردونه. فکر میکنم هر کاراکتر فارسی رو ۳-۴ تا میشماره!!؟ ولی واسه انگلیسی درسته.
ممنون میشم اگه راهی به ذهنتون میرسه بگین. مد کدنویس نیستم و اطلاعات زیادی از php ندارم.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.