وعليكم السلام
كود PHP:
<?
$arabic = 'ا-ي';
$patern = '/^[a-z0-9'.$arabic.' ]{6,}$/i';
preg_match($patern,$_POST['name']);
?>
أعتقد أن preg ستدعم اللغة العربية في هذه الحالة ...
لكن أشعر وكأنك تتحدث عن تخزين البيانات في قاعدة البيانات عن طريق الجافاسكربت مثلاً بصيغة Unicode .. فلو قمت بعمل escape للبيانات قبل تخزينها بواسطة الجافاسكربت فإنها ستتحول إلى :
والـ XXXX أيضاً هي 4 خانات بصيغة hex .. لو أردنا قراءة هذه الصيغة بالعربية سنقوم بتحويل الصيغة نفسها إلى :
حيث X تساوي قيمة Decimal المضاهية للـ Hex في الصيغة العلوية .. وهذا هو الـ Unicode ..
برمجياً:
كود PHP:
function urldecode_unicode($text) {
return preg_replace('#%u([0-9A-F]{1,4})#ie', "'&#' . hexdec('\\1') . ';'", $text);
}
أعلم أن هذه المعلومات تعرفها جيداً ولم تكن قد غابت عن بالك .. لكن هل ما تريده هو التأكد من أن هذه البيانات عربية مثلاً ؟ أم استخدام هذه الصيغة للبحث عن الحروف العربية .. الأول أعتقد أنه أسهل من الآخر .. عن طريق معرفة الحروف العربية أولاً .. ثم البحث عنها .. أما إذا كان ما تريده هو أن تبحث بواسطة هذه الرموز فهذا ما واجهته أثناء بنائي لموقعي الجديد ، حيث أردت التحويل بشكل عكسي .. لكني لم أستطع حيث أن الرموز لا تعد مقروءة .. إلا إذا كانت هناك طريقة لا أعرفها لعدم خبرتي الكبيرة ...
ملاحظة: عندما احتجت إلى التعامل مع Unicode ( بسبب استخدام تقنية AJAX ) قمت ببناء دالتين للمساعدة ، وهما :
كود PHP:
function strlen_unicode($text)
{
return strlen(preg_replace("/&#([0-9]{4});/si", "*", $text));
}
function cut_unicode($text, $num) {
$origtext = $text;
$unilen = strlen_unicode($text);
if ($unilen > $num) {
$delnum = $unilen - $num;
$x = 0;
while ($x < $delnum) {
if (preg_match("/&#([0-9]{4});$/si", $text)) {
$text = substr($text, 0, strlen($text)-7);
} else {
$text = substr($text, 0, strlen($text)-1);
}
$x++;
}
}
if ($text != $origtext) {
$text .= "..";
}
return $text;
}
ربما قد تجد فيهما شيئاً يساعدك على تحقيق ما تريد ....
اعذرني للإطالة وسوف أضع الموضوع تحت المتابعة بإذن الله تعالى .. منتظراً بقية الإخوة الكرام
..
تحياتي، sBForum ( سابقاً )