26
ฉันจะลบสำเนียงออกจากอักขระในสตริง PHP ได้อย่างไร
ฉันพยายามลบสำเนียงจากอักขระในสตริง PHP เป็นขั้นตอนแรกในการทำให้สตริงใช้งานได้ใน URL ฉันใช้รหัสต่อไปนี้: $input = "Fóø Bår"; setlocale(LC_ALL, "en_US.utf8"); $output = iconv("utf-8", "ascii//TRANSLIT", $input); print($output); ผลลัพธ์ที่ฉันคาดหวังจะเป็นดังนี้: F'oo Bar อย่างไรก็ตามแทนที่อักขระเน้นเสียงจะถูกทับศัพท์จะถูกแทนที่ด้วยเครื่องหมายคำถาม: F?? B?r ทุกสิ่งที่ฉันพบทางออนไลน์บ่งชี้ว่าการตั้งค่าภาษาจะช่วยแก้ปัญหานี้ได้ แต่ฉันทำสิ่งนี้แล้ว ฉันได้ตรวจสอบรายละเอียดต่อไปนี้แล้ว: เซิร์ฟเวอร์รองรับการตั้งค่าโลแคลฉัน (รวมอยู่ในรายการที่ผลิตโดยlocale -a) การเข้ารหัสต้นทางและปลายทาง (UTF-8 และ ASCII) ได้รับการสนับสนุนโดย iconv เวอร์ชันของเซิร์ฟเวอร์ (รวมอยู่ในรายการที่ผลิตโดยiconv -l) สตริงอินพุตถูกเข้ารหัส UTF-8 (ตรวจสอบโดยใช้mb_check_encodingฟังก์ชันของ PHP ตามที่แนะนำในคำตอบโดย mercator ) การโทรไปยังsetlocaleประสบความสำเร็จ (ส่งกลับ'en_US.utf8'มากกว่าFALSE) สาเหตุของปัญหา: เซิร์ฟเวอร์กำลังใช้ iconv …