Frage

Ich habe eine MySQL-Datenbank mit Buchtitel in Englisch und Arabisch und ich bin mit einem PHP-Klasse dass automatisch arabischen Text in lateinische Schrift transkribieren.

Ich würde meine Ausgabe von HTML mag so etwas wie folgt aussehen:

<h3>A book</h3>
<h3>كتاب <em>(kitaab)</em></h3>
<h3>Another book</h3>

Gibt es eine Möglichkeit für PHP, die Sprache eines Strings zu bestimmen, basierend auf den Unicode-Zeichen und darin verwendeten Glyphen? Ich versuche, so etwas zu bekommen:

$Ar = new Arabic('EnTransliteration');
while ($item = mysql_fetch_array($results)) {
    ...
    if (some test to see if $item['item_title'] has Arabic glyphs in it) {
      echo "<h3>$item[item_title] <em>(" . $Ar->ar2en($item['item_title']) . ")</em></h3>";
    } else {
      echo "<h3>$item[item_title]</h3>";
    }
    ...
}

Glücklicherweise ist die Klasse Choke nicht, wenn lateinische Buchstaben gefüttert, so in der Theorie ich jedes Ergebnis durch die Transformation schicken könnte, aber das scheint wie eine Verschwendung der Verarbeitung.

Danke!

Edit: Ich habe immer noch keine Möglichkeit zu überprüfen, für Glyphen oder Zeichen gefunden. Ich glaube, ich alle arabischen Zeichen in einem Array setzen könnte und prüfen, ob irgendetwas in dem Array einen Teil der Zeichenfolge übereinstimmt ...

Ich habe jedoch Figur eine Zwischenlösung aus, die am Ende gut funktionieren könnten. Es bringt jeden Titel durch die Transformation unabhängig von der Sprache, sondern gibt nur die eingeklammerten Umschrift, wenn die Zeichenfolge geändert wurde:

while ($item = mysql_fetch_array($mysql_results)) {
    $transliterate = trim(strtolower($Ar->ar2en($item['item_title'])));
    $item_title = (strtolower($item['item_title']) == $transliterate) ? $item['item_title'] : $item['item_title'] . " <em>($transliterate)</em>";

    echo "<h3>$item_title</h3>";
}
War es hilfreich?

Lösung

Das sollte es tun:

preg_match("/\p{Arabic}/u", $item['item_title'])

Sie könnten, dass reguläre Ausdrücke anspruchsvolle ein bisschen mehr machen, wenn Sie wollen, aber ich glaube nicht wirklich, Sie müssen.

Die \p Escape-Sequenz lässt Zeichen wählen basierend auf ihren Unicode-Eigenschaften (wenn das u Muster Modifikator verwendet wird).

Das PHP Handbuch erwähnt: „Erweiterte Eigenschaften wie‚Greek‘oder‚InMusicalSymbols‘wird nicht von PCRE unterstützt.“ Aber das ist nicht ganz richtig mehr. PCRE Version 6.5 Unterstützung für Skriptnamen .

Andere Tipps

Hier ist eine Open-Source-PHP-Klasse für arabische Zeichen gesetzt automatische Erkennung:

http://www.ar-php.com/php /arabic/index.html#ArCharsetD

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top