URL 사용에 적합한 문자열을 만들기 위해 PHP 문자열의 문자를 해당 ASCII 문자로 변환할 때 문제가 발생하는 것이 일반적입니다. 문자 인코딩과 관련이 있습니다. 이 문제를 해결하는 방법은 다음과 같습니다.
서버에 iconv가 올바르게 구현되어 있는지 확인하세요. PHP의 iconv 함수는 "glibc" 버전이 아닌 "libiconv" 라이브러리에 의존합니다. 악센트 문자가 물음표로 바뀌는 등의 문제가 발생하는 경우 phpinfo() 함수를 사용하여 이 구성을 확인하세요.
setlocale(LC_ALL, "en_US.utf8")을 사용하여 로케일을 "en_US.utf8"로 설정하고 입력 문자열이 UTF-8 인코딩인지 확인하세요. 이 인코딩을 검증하려면 PHP의 mb_check_encoding() 함수를 사용하세요.
"TRANSLIT" 음역 모드를 사용하여 문자를 UTF-8에서 ASCII로 음역하려면 iconv("utf-8", "ascii//TRANSLIT", $input)를 사용하세요. 악센트와 특수 문자를 제거해야 합니다.
iconv의 "libiconv" 구현에 액세스할 수 없는 경우 다음 PHP 문자열 조작 함수를 사용하여 악센트를 제거할 수 있습니다.
아래 표시된 WordPress 구현과 같은 사용자 정의 함수를 사용하는 것이 좋습니다. 이 함수는 문자 맵을 활용하여 악센트 문자를 일반 ASCII 문자로 변환합니다.
function remove_accents($string) { if ( !preg_match('/[\x80-\xff]/', $string) ) return $string; $chars = array( // Decompositions for Latin-1 Supplement chr(195).chr(128) => 'A', chr(195).chr(129) => 'A', chr(195).chr(130) => 'A', chr(195).chr(131) => 'A', chr(195).chr(132) => 'A', chr(195).chr(133) => 'A', chr(195).chr(135) => 'C', chr(195).chr(136) => 'E', chr(195).chr(137) => 'E', chr(195).chr(138) => 'E', chr(195).chr(139) => 'E', chr(195).chr(140) => 'I', chr(195).chr(141) => 'I', chr(195).chr(142) => 'I', chr(195).chr(143) => 'I', chr(195).chr(145) => 'N', chr(195).chr(146) => 'O', chr(195).chr(147) => 'O', chr(195).chr(148) => 'O', chr(195).chr(149) => 'O', chr(195).chr(150) => 'O', chr(195).chr(153) => 'U', chr(195).chr(154) => 'U', chr(195).chr(155) => 'U', chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y', chr(195).chr(159) => 's', chr(195).chr(160) => 'a', chr(195).chr(161) => 'a', chr(195).chr(162) => 'a', chr(195).chr(163) => 'a', chr(195).chr(164) => 'a', chr(195).chr(165) => 'a', chr(195).chr(167) => 'c', chr(195).chr(168) => 'e', chr(195).chr(169) => 'e', chr(195).chr(170) => 'e', chr(195).chr(171) => 'e', chr(195).chr(172) => 'i', chr(195).chr(173) => 'i', chr(195).chr(174) => 'i', chr(195).chr(175) => 'i', chr(195).chr(177) => 'n', chr(195).chr(178) => 'o', chr(195).chr(179) => 'o', chr(195).chr(180) => 'o', chr(195).chr(181) => 'o', chr(195).chr(182) => 'o', chr(195).chr(182) => 'o', chr(195).chr(185) => 'u', chr(195).chr(186) => 'u', chr(195).chr(187) => 'u', chr(195).chr(188) => 'u', chr(195).chr(189) => 'y', chr(195).chr(191) => 'y', // Decompositions for Latin Extended-A chr(196).chr(128) => 'A', chr(196).chr(129) => 'a', chr(196).chr(130) => 'A', chr(196).chr(131) => 'a', chr(196).chr(132) => 'A', chr(196).chr(133) => 'a', chr(196).chr(134) => 'C', chr(196).chr(135) => 'c', chr(196).chr(136) => 'C', chr(196).chr(137) => 'c', chr(196).chr(138) => 'C', chr(196).chr(139) => 'c', chr(196).chr(140) => 'C', chr(196).chr(141) => 'c', chr(196).chr(142) => 'D', chr(196).chr(143) => 'd', chr(196).chr(144) => 'D', chr(196).chr(145) => 'd', chr(196).chr(146) => 'E', chr(196).chr(147) => 'e', chr(196).chr(148) => 'E', chr(196).chr(149) => 'e', chr(196).chr(150) => 'E', chr(196).chr(151) => 'e', chr(196).chr(152) => 'E', chr(196).chr(153) => 'e', chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
위 내용은 URL 사용을 위해 PHP 문자열의 문자에서 악센트를 어떻게 제거합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!