Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana Menggantikan Watak Beraksen dengan Rakan Sejawat Tanpa Aksen dalam PHP?

Bagaimana Menggantikan Watak Beraksen dengan Rakan Sejawat Tanpa Aksen dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2024-12-09 14:15:11245semak imbas

How to Properly Replace Accented Characters with Their Unaccented Counterparts in PHP?

Menggantikan Aksara Beraksen dalam PHP

Dalam PHP, menggantikan aksara beraksen dengan rakan biasa mereka boleh menjadi tugas yang mencabar. Pertimbangkan contoh berikut:

$string = "Éric Cantona";
$strict = strtolower($string);

$patterns = [
    '/[á|â|à|å|ä]/',
    '/[ð|é|ê|è|ë]/',
    '/[í|îì|ï]/',
    '/[ó|ô|ò|ø|õ|ö]/',
    '/[ú|û|ù|ü]/',
    '/æ/',
    '/ç/',
    '/ß/'
];

$replacements = [
    'a',
    'e',
    'i',
    'o',
    'u',
    'ae',
    'c',
    'ss'
];

$strict = preg_replace($patterns, $replacements, $strict);
echo "Final: ".$strict;

Kod ini bertujuan untuk menggantikan aksara beraksen dalam rentetan "Éric Cantona" dengan padanan tanpa aksennya, tetapi outputnya ialah "ric cantona," yang tidak betul. Isunya terletak pada hakikat bahawa kod itu tidak mengambil kira aksara beraksen huruf besar seperti "É" dalam "Éric."

Pendekatan yang betul ialah menggunakan tatasusunan aksara yang tidak diingini yang lebih komprehensif dan penggantiannya, sebagai dilihat di bawah:

$unwanted_array = [
    'Š' => 'S', 'š' => 's',
    'Ž' => 'Z', 'ž' => 'z',
    'À' => 'A', 'Á' => 'A',
    'Â' => 'A', 'Ã' => 'A',
    'Ä' => 'A', 'Å' => 'A',
    'Æ' => 'A', 'Ç' => 'C',
    'È' => 'E', 'É' => 'E',
    'Ê' => 'E', 'Ë' => 'E',
    'Ì' => 'I', 'Í' => 'I',
    'Î' => 'I', 'Ï' => 'I',
    'Ñ' => 'N', 'Ò' => 'O',
    'Ó' => 'O', 'Ô' => 'O',
    'Õ' => 'O', 'Ö' => 'O',
    'Ø' => 'O', 'Ù' => 'U',
    'Ú' => 'U', 'Û' => 'U',
    'Ü' => 'U', 'Ý' => 'Y',
    'Þ' => 'B', 'ß' => 'Ss',
    'à' => 'a', 'á' => 'a',
    'â' => 'a', 'ã' => 'a',
    'ä' => 'a', 'å' => 'a',
    'æ' => 'a', 'ç' => 'c',
    'è' => 'e', 'é' => 'e',
    'ê' => 'e', 'ë' => 'e',
    'ì' => 'i', 'í' => 'i',
    'î' => 'i', 'ï' => 'i',
    'ð' => 'o', 'ñ' => 'n',
    'ò' => 'o', 'ó' => 'o',
    'ô' => 'o', 'õ' => 'o',
    'ö' => 'o', 'ø' => 'o',
    'ù' => 'u', 'ú' => 'u',
    'û' => 'u', 'ý' => 'y',
    'þ' => 'b', 'ÿ' => 'y'
];
$str = strtr($str, $unwanted_array);

Dengan menggunakan tatasusunan ini, kod akan menggantikan kedua-dua aksara beraksen huruf kecil dan besar dengan tepat.

Atas ialah kandungan terperinci Bagaimana Menggantikan Watak Beraksen dengan Rakan Sejawat Tanpa Aksen dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn