PHP : 움라우트를 UTF-8 문자열에서 가장 가까운 7 비트 ASCII로 바꾸십시오.
PHPPHP : 움라우트를 UTF-8 문자열에서 가장 가까운 7 비트 ASCII로 바꾸십시오.
내가하고 싶은 일은 문자열에서 모든 악센트와 움라우트를 제거하고 "lärm"을 "larm"또는 "andré"을 "andre"로 바꾸는 것입니다. 내가 뭘하려고했는지 utf8_decode 문자열을 누른 다음 strtr을 사용하지만 내 소스 파일이 UTF-8 파일로 저장 되었기 때문에 모든 움라우트에 ISO-8859-15 문자를 입력 할 수 없습니다. UTF-8 문자.
분명히 이것을위한 해결책은 ISO-8859-15 파일 인 include를 포함하는 것이지만, 다른 필수 include를 포함하는 것보다 더 좋은 방법이 있어야합니까?
echo strtr(utf8_decode($input),
'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ',
'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');
업데이트 : 어쩌면 나는 내가하려고하는 것에 대해 약간 부정확했다. 나는 움라우트를 실제로 제거하고 싶지는 않지만, 그것들을 가장 가까운 "한 문자 ASCII"와 대체 할 수있다.
해결법
-
==============================
1.
iconv("utf-8","ascii//TRANSLIT",$input);
확장 예제
-
==============================
2.로케일을 설정하거나 거대한 변환 테이블을 필요로하지 않는 약간의 트릭 :
로케일을 설정하거나 거대한 변환 테이블을 필요로하지 않는 약간의 트릭 :
function Unaccent($string) { if (strpos($string = htmlentities($string, ENT_QUOTES, 'UTF-8'), '&') !== false) { $string = html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|tilde|uml);~i', '$1', $string), ENT_QUOTES, 'UTF-8'); } return $string; }
파일이 제대로 작동하려면 UTF-8로 파일을 저장해야합니다 (이미 수행 한 것처럼).
-
==============================
3.당신은 또한 이것을 시도 할 수있다.
당신은 또한 이것을 시도 할 수있다.
$string = "Fóø Bår"; $transliterator = Transliterator::createFromRules(':: Any-Latin; :: Latin-ASCII; :: NFD; :: [:Nonspacing Mark:] Remove; :: Lower(); :: NFC;', Transliterator::FORWARD); echo $normalized = $transliterator->transliterate($string);
하지만 http://php.net/manual/en/book.intl.php를 사용할 수 있어야합니다.
-
==============================
4.좋아, 나 자신이 분명한 해결책을 찾았지만 성능면에서 최상은 아니야.
좋아, 나 자신이 분명한 해결책을 찾았지만 성능면에서 최상은 아니야.
echo strtr(utf8_decode($input), utf8_decode('ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'), 'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');
-
==============================
5.아랍어 및 페르시아어 사용자의 경우 발음 구별 부호를 제거하려면 다음과 같이하는 것이 좋습니다.
아랍어 및 페르시아어 사용자의 경우 발음 구별 부호를 제거하려면 다음과 같이하는 것이 좋습니다.
$diacritics = array('َ','ِ','ً','ٌ','ٍ','ّ','ْ','ـ'); $search_txt = str_replace($diacritics, '', $diacritics);
아랍어 키보드에서 발음 구별 부호를 입력하기 위해 u를 사용할 수 있습니다 (이 코드는 Asci가 아닌 유니 코드입니다) 코드는 Windows 편집기에서 분음 부호를 직접 입력하거나 Alt + (분음 기호 문자 입력) 이것은 코드입니다.
ـَ(0243) ـِ(0246) ـُ(0245) ـً(0240) ـٍ(0242) ـٌ(0241) ـْ(0250) ـّ(0248) ـ ـ(0220)
-
==============================
6.나는 이것이 프랑스와 독일에서 가장 일관된 결과를 제공한다는 것을 발견했다. 메타 태그를 utf-8로 설정하면 단어 배열에서 줄을 반환하는 함수에 배치하고 완벽하게 작동합니다.
나는 이것이 프랑스와 독일에서 가장 일관된 결과를 제공한다는 것을 발견했다. 메타 태그를 utf-8로 설정하면 단어 배열에서 줄을 반환하는 함수에 배치하고 완벽하게 작동합니다.
htmlentities ( $line, ENT_SUBSTITUTE , 'utf-8' )
-
==============================
7.WordPress를 사용하는 경우에는 내장 함수 remove_accents ($ string)를 사용할 수 있습니다.
WordPress를 사용하는 경우에는 내장 함수 remove_accents ($ string)를 사용할 수 있습니다.
https://codex.wordpress.org/Function_Reference/remove_accents
그러나 버그를 발견했습니다. 단일 문자가있는 문자열에는 작동하지 않습니다.
from https://stackoverflow.com/questions/158241/php-replace-umlauts-with-closest-7-bit-ascii-equivalent-in-an-utf-8-string by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
데이터베이스 Vs 파일 시스템에 파일 저장 (0) | 2018.09.13 |
---|---|
DOMDocument의 바깥 HTML을 반환하는 방법? (0) | 2018.09.13 |
업로드시 보안 위협 (0) | 2018.09.13 |
Google API 클라이언트로 토큰을 새로 고치는 방법은 무엇입니까? (0) | 2018.09.13 |
GMAIL 메일 서버를 사용하여 PHP로 XAMPP를 실행하는 localhost에서 전자 메일 보내기 (0) | 2018.09.13 |