مقایسه یک خونه از string با یک کاراکتر فارسی
سلام - میخوایم یه شرطی تعریف کنم تا تعداد کاراکتر های فارسی توی یه string رو پیدا کنم - که چند تا :
کاراکتر فارسی
اعداد 0 تا 9
- + = !@#%^$^& و...
داره.
مشکل اصلی من سر مقایسه با کاراکتر های فارسی هستش
for( $i=0; $i < strlen($data); $i++) {
if( ($data[i] >= 'ا' && $data[i] <='ی') { ... }
}
نقل قول: مقایسه یک خونه از string با یک کاراکتر فارسی
سلام
می توانید از توابع 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);
نقل قول: مقایسه یک خونه از string با یک کاراکتر فارسی
خدا امواتت رو رحمت کنه - دمت گرم - کارم راه افتاد :قلب:
یه کدی با جاوا اسکریپ نوشتم برا محدود کردن اسپمرها ( دیدگاه ) که کار نکرد - الان سمت سرورشو یه کد ساده به کمک شما زدم و فعلا که کار کرد - تا فردا بمونه ببینیم عزیزان اسپمر چند تا دیدگاه میتونن قاچاقی رد کنن :لبخند:
این لینک هم دیدم خوبه گفتم بزارم ملت استفاده کنن :
http://collation-charts.org/mysql60/...e_eastern.html
==================
همون کد اولی که نوشتی بهتره به بنظرم - من بیشتر میپسندم :لبخند:
نقل قول: مقایسه یک خونه از string با یک کاراکتر فارسی
خواهش می کنم
یک برنامه هم خود ویندوز داره به اسم charmap می توانید از آن نیز برای مشاهده کاراکترهای یونیکد استفاده کنید فقط یک فونت مناسب مانند tahoma انتخاب کنید.