Heim >Backend-Entwicklung >PHP-Tutorial >Wie entferne ich Akzente aus Zeichenfolgen in PHP mithilfe einer benutzerdefinierten Funktion?

Wie entferne ich Akzente aus Zeichenfolgen in PHP mithilfe einer benutzerdefinierten Funktion?

Barbara Streisand
Barbara StreisandOriginal
2024-11-12 16:51:02381Durchsuche

How to Remove Accents from Strings in PHP Using a Custom Function?

So entfernen Sie Akzente von Zeichen in einer PHP-Zeichenfolge mithilfe einer benutzerdefinierten Funktion

Während die PHP-Iconv-Funktion verwendet werden kann, um Akzente aus zu entfernen Zeichenfolgen können bestimmte Faktoren, wie z. B. eine falsche Iconv-Implementierung, die Wirksamkeit beeinträchtigen. Glücklicherweise gibt es eine alternative Methode: die Verwendung einer benutzerdefinierten Funktion, die eine Konvertierungstabelle nutzt.

Schritte:

  1. Konvertierungstabelle erstellen:
    Definieren Sie ein Array ($chars), das Akzentzeichen ihren Basisäquivalenten zuordnet. Beispiel:
    $chars = [chr(195).chr(128) => 'A', chr(195).chr(129) => 'A', ... ];
  2. Schreiben Sie die benutzerdefinierte Funktion:
    Erstellen Sie eine Funktion, die eine Zeichenfolge als Eingabe verwendet und die Konvertierungstabelle darauf anwendet und ersetzt akzentuierte Zeichen mit ihren Basis-Gegenstücken. Beispiel:

    function remove_accents($string) {
        $string = strtr($string, $chars);
        return $string;
    }
  3. Verwenden Sie die Funktion:
    Rufen Sie die Funktion „remove_accents()“ für die gewünschte Zeichenfolge auf, um etwaige Akzente zu entfernen. Beispiel:

    $input = "Fóø Bår";
    
    // Call the function
    $output = remove_accents($input);
    
    // Display the result
    print($output);

Erwartete Ausgabe:

F'oo Bar

Benutzerdefinierte Konvertierungstabelle:

Das Folgende ist ein Beispiel für eine Konvertierungstabelle, die Sie verwenden können:

[
    // 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) =&gt> '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',
    chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
    chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',

Das obige ist der detaillierte Inhalt vonWie entferne ich Akzente aus Zeichenfolgen in PHP mithilfe einer benutzerdefinierten Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn