PHP gliflerinin dayalı dize dili kontrol

2 Cevap php

Ben İngilizce ve Arapça kitap başlıkları ile bir MySQL veritabanı var ve ben bir PHP class otomatik olarak Latin alfabesine içine Arapça metin çevirisini ki kullanıyorum.

Benim çıkış HTML böyle bir şey bakmak istiyorum:

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

Içinde kullanılan Unicode karakter ve glyphs dayalı bir dize dilini belirlemek için PHP için bir yolu var mı? Ben böyle bir şey almaya çalışıyorum:

$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>";
    }
    ...
}

Latin karakterleri beslenen, yani teoride ben dönüşüm yoluyla her sonuç göndermek olabilir, ama bu işleme bir atık gibi görünüyor Neyse ki sınıf kısmak değildir.

Teşekkürler!

Edit: I still haven't found a way to check for glyphs or characters. I suppose I could put all the Arabic characters in an array and check if anything in the array matches a part of the string...

Ben, ancak, sonunda ince işe yarayabilecek bir ara çözüm anlamaya etmedi. Bu dili ne olursa olsun dönüşüm yoluyla, her başlık koyar, ama dize değiştirildi yalnızca parantez çevirisini verir:

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>";
}

2 Cevap

Bu yapmak gerekir:

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

Eğer isterseniz düzenli ifade biraz daha sofistike yapabilir, ama sen gerçekten gerek olduğunu sanmıyorum.

\p kaçış dizisi lets you select characters based on their Unicode properties (when the u desen değiştirici kullanılır).

PHP kılavuzu bahseder: Yunan "veya" InMusicalSymbols "gibi Genişletilmiş özellikleri" "PCRE'nin tarafından desteklenmiyor." Ama artık tamamen doğru değil. PCRE release 6.5 added support for script names.

Burada Arapça karakter ayarlanmış otomatik algılama için bir PHP açık kaynak kodlu bir sınıf:

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