سؤال

لدي قاعدة بيانات MySQL مع دفتر العناوين باللغتين العربية والإنجليزية و أنا باستخدام الطبقة PHP التي يمكن أن تلقائيا transliterate النصوص العربية إلى الحروف اللاتينية.

أحب الإخراج HTML أن ننظر بشيء من هذا القبيل:

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

هل هناك طريقة PHP لتحديد لغة سلسلة استنادا إلى أحرف Unicode و الرموز المستخدمة في ذلك ؟ أنا أحاول أن تحصل على شيء مثل هذا:

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

لحسن الحظ فئة لا يختنق عندما تتغذى على الأحرف اللاتينية ، لذلك من الناحية النظرية لا يمكن أن ترسل كل نتيجة من خلال التحول ، ولكن هذا يبدو من النفايات المعالجة.

وذلك بفضل!

تحرير: أنا لا تزال لا يمكن العثور على طريقة للتحقق من الرموز أو الأحرف.أعتقد أنني يمكن أن تضع كل الأحرف العربية في مجموعة والتحقق إذا كان أي شيء في مجموعة مباريات جزء من السلسلة...

لكن معرفة حل مؤقت التي يمكن أن تعمل على ما يرام في النهاية.فإنه يضع كل عنوان من خلال التحول بغض النظر عن اللغة ، ولكن النواتج فقط قوسين الحروف إذا كانت السلسلة تغيرت:

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>";
}
هل كانت مفيدة؟

المحلول

هذا ينبغي أن نفعل ذلك:

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

هل يمكن أن تجعل هذا التعبير العادي قليلا أكثر تعقيدا إذا كنت ترغب, ولكن لا أعتقد أن كنت حقا بحاجة إلى.

على \p تسلسل الهروب يتيح لك تحديد الشخصيات على أساس Unicode خصائص (عندما u نمط التعديل يستخدم).

PHP دليل يذكر:"الخصائص الموسعة مثل "اليونانية" أو "InMusicalSymbols" غير معتمدة من قبل PCRE." ولكن هذا ليس صحيحا تماما بعد الآن. PCRE الإصدار 6.5 واضاف لدعم السيناريو أسماء.

نصائح أخرى

هنا PHP مفتوحة المصدر فئة الشخصية العربية مجموعة الكشف عن السيارات:

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top