>백엔드 개발 >PHP 튜토리얼 >URL 사용을 위해 PHP 문자열의 문자에서 악센트를 어떻게 제거합니까?

URL 사용을 위해 PHP 문자열의 문자에서 악센트를 어떻게 제거합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-12 20:34:02835검색

How do you remove accents from characters in PHP strings for URL use?

PHP 문자열의 문자에서 악센트 제거

URL 사용에 적합한 문자열을 만들기 위해 PHP 문자열의 문자를 해당 ASCII 문자로 변환할 때 문제가 발생하는 것이 일반적입니다. 문자 인코딩과 관련이 있습니다. 이 문제를 해결하는 방법은 다음과 같습니다.

1. 서버 구성 확인:

서버에 iconv가 올바르게 구현되어 있는지 확인하세요. PHP의 iconv 함수는 "glibc" 버전이 아닌 "libiconv" 라이브러리에 의존합니다. 악센트 문자가 물음표로 바뀌는 등의 문제가 발생하는 경우 phpinfo() 함수를 사용하여 이 구성을 확인하세요.

2. 로케일 설정:

setlocale(LC_ALL, "en_US.utf8")을 사용하여 로케일을 "en_US.utf8"로 설정하고 입력 문자열이 UTF-8 인코딩인지 확인하세요. 이 인코딩을 검증하려면 PHP의 mb_check_encoding() 함수를 사용하세요.

3. 문자 음역:

"TRANSLIT" 음역 모드를 사용하여 문자를 UTF-8에서 ASCII로 음역하려면 iconv("utf-8", "ascii//TRANSLIT", $input)를 사용하세요. 악센트와 특수 문자를 제거해야 합니다.

4. 문자열 함수 활용:

iconv의 "libiconv" 구현에 액세스할 수 없는 경우 다음 PHP 문자열 조작 함수를 사용하여 악센트를 제거할 수 있습니다.

  • strtr( ): 악센트가 있는 문자를 악센트가 없는 문자로 바꿉니다.
  • preg_replace(): 악센트가 있는 문자를 악센트가 없는 문자로 바꿉니다. ASCII에 해당합니다.
  • mb_convert_encoding(): 문자열을 UTF-8에서 악센트를 제거하여 ASCII로 변환합니다.

5. 사용자 정의 함수:

아래 표시된 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.