PHP-Transliteration

Lesezeit: 5 Minuten

Gibt es Lösungen, die alle fremden Zeichen in Az-Äquivalente umwandeln? Ich habe ausführlich auf Google gesucht und konnte keine Lösung oder sogar eine Liste von Zeichen und Äquivalenten finden. Der Grund dafür ist, dass ich nur Az-URLs anzeigen möchte, plus viele andere Stolperfallen, wenn ich mit diesen Zeichen zu tun habe.

  • Wie bereits erwähnt, würde eine grobe Liste von Konvertierungen für lateinische Alphabete ausreichen.

    Benutzer137621

    16. August 2009 um 15:55 Uhr

  • Der aktuellen Version von PHP (PHP 5.4) wurde jetzt eine Transliterationsklasse hinzugefügt.

    – Bakytn

    4. März 2012 um 4:53 Uhr

  • Die Transliterator Klasse (internationale Nebenstelle)

    – hakre

    17. April 2012 um 12:10 Uhr

Sie können verwenden Symboldie eine spezielle Transliterationskodierung hat.

Wenn die Zeichenfolge “//TRANSLIT” an tocode angehängt wird, wird die Transliteration aktiviert. Das heißt, wenn ein Zeichen nicht im Zielzeichensatz dargestellt werden kann, kann es durch ein oder mehrere Zeichen angenähert werden, die dem ursprünglichen Zeichen ähnlich aussehen.

http://www.gnu.org/software/libiconv/documentation/libiconv/iconv_open.3.html

Siehe hier für ein vollständiges Beispiel, das zu Ihrem Anwendungsfall passt.

  • Ich war gerade bei meiner Recherche über iconv gestolpert. Vielen Dank, dass Sie mich mit dem vollständigen Beispiel verlinkt haben. Danke.

    Benutzer137621

    16. August 2009 um 16:15 Uhr

  • Sie sollten die Antwort von Shane O’Grady berücksichtigen

    – Quamis

    26. Oktober 2011 um 11:41 Uhr

  • Sie sollten für diese Arbeit niemals iconv verwenden. Auf verschiedenen Systemen können unterschiedliche Iconv-Bibliotheken vorhanden sein, daher sind die Ergebnisse nicht garantiert (genauer gesagt – es ist garantiert, dass die Ergebnisse unterschiedlich sind), also seien Sie vorsichtig!

    – Velda

    17. Juli 2018 um 18:12 Uhr

Wenn Sie iconv verwenden, stellen Sie sicher, dass Ihr Gebietsschema richtig eingestellt ist, bevor Sie die Transliteration versuchen, da sonst einige Zeichen nicht korrekt transliteriert werden

setlocale(LC_CTYPE, 'en_US.UTF8');

PHP Transliteration
Iljitsch

Dadurch werden so viele ausländische Zeichen wie möglich (einschließlich kyrillischer, chinesischer, arabischer usw.) in ihre Az-Entsprechungen konvertiert:

$AzString = transliterator_transliterate('Any-Latin;Latin-ASCII;', $foreignString);

Sie möchten vielleicht Installieren PHP Intl-Erweiterung zuerst.

1646255046 831 PHP Transliteration
Kemal Dağ

Wenn Sie mit einer Entwicklungs- und Veröffentlichungsumgebung festsitzen, die PHP 5.4 oder neuer nicht unterstützt, sollten Sie entweder verwenden Symbol oder eine benutzerdefinierte Transliterationsbibliothek.

Im Fall von iconv finde ich es äußerst wenig hilfreich, insbesondere wenn es mit arabischen oder kyrillischen Alphabeten verwendet wird. Ich würde mich für eine in PHP 5.4 integrierte Transliterationsklasse oder eine benutzerdefinierte Transliterationsklasse entscheiden.

Eine der geposteten Lösungen erwähnte eine benutzerdefinierte Bibliothek, die ich nicht getestet habe.

Als ich Drupal benutzte, liebte ich ihre Transliterationsmoduldass ich es kürzlich portiert habe, um es ohne Drupal nutzbar zu machen.

Sie können es herunterladen Hier und wie folgt verwenden:

<?php

include "JTransliteration.php";

$mombojombotext = "誓曰:『時日害喪?予及女偕亡。』民欲與之偕亡,雖有";
$nonmombojombotex = JTransliteration::transliterate($mombojombotext);

echo $nonmombojombotex;

?>

Hinweis: Ich poste dies von einer anderen ähnlichen Frage in der Hoffnung, dass es für andere hilfreich ist.

Am Ende habe ich eine PHP-Bibliothek basierend auf URLify.js aus dem Django-Projekt geschrieben, da ich iconv() als zu unvollständig empfand. Sie finden es hier:

https://github.com/jbroadway/urlify

Verarbeitet lateinische Zeichen sowie griechische, türkische, russische, ukrainische, tschechische, polnische und lettische Zeichen.

  • Ja, das war hilfreich. Danke!

    – Ilija

    23. August 2012 um 10:19 Uhr

PHP Transliteration
bulforce

<?php
/**
 * @author bulforce[]gmail.com # 2011
 * Simple class to attempt transliteration of bulgarian lating text into bulgarian cyrilic text
 */

// Usage:
// $text = "yagoda i yundola";
// $tl = new Transliterate();
// echo $tl->lat_to_cyr($text); //ягода и юндола

class Transliterate {

    private $cyr_identical = array("а", "б", "в", "в", "г", "д", "е", "ж", "з", "и", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ъ", "я");
    private $lat_identical = array("a", "b", "v", "w", "g", "d", "e", "j", "z", "i", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "y", "q");
    private $cyr_fricative = array("ж", "ч", "ш", "щ", "ц", "я", "ю", "я", "ю");    
    private $lat_fricative = array("zh", "ch", "sh", "sht", "ts", "ia", "iu", "ya", "yu");

    public function __construct() {
        $this->identical_to_upper();
        $this->fricative_to_variants();
    }

    public function lat_to_cyr($str) {

        for ($i = 0; $i < count($this->cyr_fricative); $i++) {
            $c_cyr = $this->cyr_fricative[$i];
            $c_lat = $this->lat_fricative[$i];
            $str = str_replace($c_lat, $c_cyr, $str);
        }

        for ($i = 0; $i < count($this->cyr_identical); $i++) {
            $c_cyr = $this->cyr_identical[$i];
            $c_lat = $this->lat_identical[$i];
            $str = str_replace($c_lat, $c_cyr, $str);
        }

        return $str;
    }

    private function identical_to_upper() {

        foreach ($this->cyr_identical as $k => $v) {
            $this->cyr_identical[] = mb_strtoupper($v, 'UTF-8');
        }

        foreach ($this->lat_identical as $k => $v) {
            $this->lat_identical[] = mb_strtoupper($v, 'UTF-8');
        }
    }

    private function fricative_to_variants() {
        foreach ($this->lat_fricative as $k => $v) {
            // This handles all chars to Upper
            $this->lat_fricative[] = mb_strtoupper($v, 'UTF-8');
            $this->cyr_fricative[] = mb_strtoupper($this->cyr_fricative[$k], 'UTF-8');

            // This handles variants
            // TODO: fix the 3 leter sounds
            for ($i = 0; $i <= count($v); $i++) {
                $v[$i] = mb_strtoupper($v[$i], 'UTF-8');
                $this->lat_fricative[] = $v;
                if ($i == 0) {
                    $this->cyr_fricative[] = mb_strtoupper($this->cyr_fricative[$k], 'UTF-8');
                } else {
                    $this->cyr_fricative[] = $this->cyr_fricative[$k];
                }
                $v[$i] = mb_strtolower($v[$i], 'UTF-8');
            }
        }
    }

}

  • Ja, das war hilfreich. Danke!

    – Ilija

    23. August 2012 um 10:19 Uhr

für Komponisten-Adepten gibt es slugify

https://github.com/cocur/slugify

use Cocur\Slugify\Slugify;
$slugify = new Slugify();
echo $slugify->slugify('Hello World!'); // hello-world

//You can also change the separator used by Slugify:
echo $slugify->slugify('Hello World!', '_'); // hello_world

//The library also contains Cocur\Slugify\SlugifyInterface. Use this interface whenever you need to type hint an instance of Slugify.
//To add additional transliteration rules you can use the addRule() method.
$slugify->addRule('i', 'ey');
echo $slugify->slugify('Hi'); // hey

916120cookie-checkPHP-Transliteration

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy