PDA

View Full Version : مقایسه یک خونه از string با یک کاراکتر فارسی



md3848
جمعه 24 اسفند 1397, 13:32 عصر
سلام - میخوایم یه شرطی تعریف کنم تا تعداد کاراکتر های فارسی توی یه string رو پیدا کنم - که چند تا :
کاراکتر فارسی
اعداد 0 تا 9
- + = !@#%^$^& و...
داره.

مشکل اصلی من سر مقایسه با کاراکتر های فارسی هستش


for( $i=0; $i < strlen($data); $i++) {
if( ($data[i] >= 'ا' && $data[i] <='ی') { ... }
}

ali_sed
جمعه 24 اسفند 1397, 23:10 عصر
سلام

می توانید از توابع mb استفاده کنید.



mb_internal_encoding('utf8');

$data = 'سلام';
for( $i=0; $i < mb_strlen($data); $i++) {
$char = mb_substr($data, $i, 1);
if(preg_match('/^[\x{0600}-\x{06ff}]+$/u', $char)) {
...
}
}


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

با توجه به اینکه تنها قصد دارید کاراکترها را بشمارید می توانید از تابع preg_match_all استفاده کنید.



$data = '111234567890 منستیبمنصثگv ۱۲۳۴۵۶۷۸۹۰ lkjdlk';
echo preg_match_all('/[0-9]/u', $data),'<br/>';
echo preg_match_all('/[۰-۹]/u', $data);

md3848
جمعه 24 اسفند 1397, 23:32 عصر
خدا امواتت رو رحمت کنه - دمت گرم - کارم راه افتاد :قلب:

یه کدی با جاوا اسکریپ نوشتم برا محدود کردن اسپمرها ( دیدگاه ) که کار نکرد - الان سمت سرورشو یه کد ساده به کمک شما زدم و فعلا که کار کرد - تا فردا بمونه ببینیم عزیزان اسپمر چند تا دیدگاه میتونن قاچاقی رد کنن :لبخند:

این لینک هم دیدم خوبه گفتم بزارم ملت استفاده کنن :
http://collation-charts.org/mysql60/mysql604.utf8_general_ci.middle_eastern.html

==================


همون کد اولی که نوشتی بهتره به بنظرم - من بیشتر میپسندم :لبخند:

ali_sed
شنبه 25 اسفند 1397, 00:06 صبح
خواهش می کنم

یک برنامه هم خود ویندوز داره به اسم charmap می توانید از آن نیز برای مشاهده کاراکترهای یونیکد استفاده کنید فقط یک فونت مناسب مانند tahoma انتخاب کنید.