مساعدة في ASCII الموسعة/الترميز في PHP!
-
03-10-2019 - |
سؤال
مساء الخير يا رفاق.
هذا هو الكود الخاص بي:
static private function removeAccentedLetters($input){
for ($i = 0; $i < strlen($input); $i++) {
$input[$i]=self::simplify($input[$i]);
}
return $input;
}
static private function simplify($in){
$ord=ord($in);
switch ($ord) {
case 193: //Á...
return 'A';
case 98: //b
return 'a';
default:
return $in;
}
}
موافق. هذا هو الشيء الذي لا يعمل
case 193: //Á...
return 'A';
وهذا هو الشيء الذي يفعله:
case 98: //b
return 'a';
هذه فقط لأغراض الاختبار.
هل يمكن لأي شخص أن يخبرني ماذا يحدث؟ كان لدي نفس النوع من الخطأ من قبل ، لكنني الآن لا أستخدم أي ASCII الممتد في الكود نفسه ، والذي كان سبب الخطأ من قبل.
أعتقد أنه يجب أن يكون له علاقة بتشفير الشخصيات ولكني لست متأكدًا. بالمناسبة ، أقوم بترميز Eclipse ، ووفقًا لذلك ، فإن تشفير الأحرف الذي أستخدمه هو CP1252.
أوه ، ونعم ، من المفترض أن يزيل الكود أي رسائل معلمة مثل à واستبدالها بخطوطها الأساسية ، أي á-> أ
شكرا مقدما
المحلول
هل يمكن أن يكون ذلك إذا كان لديك أحرف متعددة البايتات ، وكنت تتجول في كل حرف باستخدام strlen()
للتحقق مما إذا كنت قد حلقت من خلال؟ strlen()
يفترض 1 بايت == 1 حرف.
كنت أنظر إلى مكتبات الترجمة الحالية ل PHP.