• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استانداردسازی متون (یونیکد کردن)
#1
Question 
سلام
یک برنامه تحت وب نوشتم که کاربران مختلف اطلاعاتی رو وارد دیتابیس میکنن و بعدا اون رو جستجو و یا دریافت میکنند.
مشکلم با متفاوت بودن کیبرد کاربرا هستش.
طبق تصویری که گذاشتم مثلا بعضی از اعداد فارسی وارد میشن و بعضی انگلیسی.بعضی حروف با ی و ک عربی و بعضی با ی و ک فارسی.
و همون طور که میدونید هنگام جتسجو به مشکل میخورن و امکان بازیابی اونها نیستش.
[عکس: i415856_unicode.png]

برای حلش یک تابع میخوام بنویسم که قبل از ورود اطلاعات. تمام کارکترها رو چک کنه و بصورت استاندارد فارسی درشون بیاره و وارد دیتابیس کنه.
چنین تابعی سراغ دارین؟
و یا راه بهتری برای حل این مشکل میدونین؟
  پاسخ
تشکر شده توسط :
#2
به این کار یونیکد کردن نمی گن
کد پی‌اچ‌پی:
$replacePairs = array(chr(0xD9) . chr(0xA0) => chr(0xDB) . chr(0xB0),
                                  
chr(0xD9) . chr(0xA1) => chr(0xDB) . chr(0xB1),
                                  
chr(0xD9) . chr(0xA2) => chr(0xDB) . chr(0xB2),
                                  
chr(0xD9) . chr(0xA3) => chr(0xDB) . chr(0xB3),
                                  
chr(0xD9) . chr(0xA4) => chr(0xDB) . chr(0xB4),
                                  
chr(0xD9) . chr(0xA5) => chr(0xDB) . chr(0xB5),
                                  
chr(0xD9) . chr(0xA6) => chr(0xDB) . chr(0xB6),
                                  
chr(0xD9) . chr(0xA7) => chr(0xDB) . chr(0xB7),
                                  
chr(0xD9) . chr(0xA8) => chr(0xDB) . chr(0xB8),
                                  
chr(0xD9) . chr(0xA9) => chr(0xDB) . chr(0xB9),
                                  
chr(0xD9) . chr(0x83) => chr(0xDA) . chr(0xA9),
                                  
chr(0xD9) . chr(0x89) => chr(0xDB) . chr(0x8C),
                                  
chr(0xD9) . chr(0x8A) => chr(0xDB) . chr(0x8C),
                                  
chr(0xDB) . chr(0x80) => chr(0xD9) . chr(0x87) . chr(0xD9) . chr(0x94));
            
strtr($text$replacePairs); 
  پاسخ
تشکر شده توسط : parsbin paull hosseintdk775 cyletech faghani
#3
ممنون
من میخوام اعداد رو هم به فارس برگردونم.اعداد انگلیسی رو هم همین طور
چه تغییری باید بدم در کد؟
حل شد
متشکر
کد پی‌اچ‌پی:
<?php
header 
('Content-type: text/html; charset=utf-8');
$text '01234567899876543210 ایران پی اچ پی';
function 
fixPersianString($text){
       if(
is_null($text))
          return 
null;
       
$replacePairs = array(
                
chr(0xD9).chr(0xA0) => chr(0xDB).chr(0xB0),
                
chr(48) => chr(0xDB).chr(0xB0),
                
chr(0xD9).chr(0xA1) => chr(0xDB).chr(0xB1),
                
chr(49) => chr(0xDB).chr(0xB1),
                
chr(0xD9).chr(0xA2) => chr(0xDB).chr(0xB2),
                
chr(50) => chr(0xDB).chr(0xB2),
                
chr(0xD9).chr(0xA3) => chr(0xDB).chr(0xB3),
                
chr(51) => chr(0xDB).chr(0xB3),
                
chr(0xD9).chr(0xA4) => chr(0xDB).chr(0xB4),
                
chr(52) => chr(0xDB).chr(0xB4),
                
chr(0xD9).chr(0xA5) => chr(0xDB).chr(0xB5),
                
chr(53) => chr(0xDB).chr(0xB5),
                
chr(0xD9).chr(0xA6) => chr(0xDB).chr(0xB6),
                
chr(54) => chr(0xDB).chr(0xB6),
                
chr(0xD9).chr(0xA7) => chr(0xDB).chr(0xB7),
                
chr(55) => chr(0xDB).chr(0xB7),
                
chr(0xD9).chr(0xA8) => chr(0xDB).chr(0xB8),
                
chr(56) => chr(0xDB).chr(0xB8),
                
chr(0xD9).chr(0xA9) => chr(0xDB).chr(0xB9),
                
chr(57) => chr(0xDB).chr(0xB9),
                
chr(0xD9).chr(0x83) => chr(0xDA).chr(0xA9),
                
chr(0xD9).chr(0x89) => chr(0xDB).chr(0x8C),
                
chr(0xD9).chr(0x8A) => chr(0xDB).chr(0x8C),
                
chr(0xDB).chr(0x80) => chr(0xD9).chr(0x87) . chr(0xD9).chr(0x94));
       return 
strtr($text$replacePairs);
   }
        echo 
fixPersianString($text$replacePairs); 
?>
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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