نظرة سريعة على مجريات يوم سوالف
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
Moderator
تاريخ التسجيل: Aug 2004-
#1 (permalink)  
regular expression بالعربي، اريد اقتراحات (sBForum,sakr4host,daif)


السلام..
اريد ان استخدم اما الامر grep او preg_match لتحري المدخلات العربية والانجليزية..
فتخيل لدي <input> و يستطيع المرسل ان يرسل فقط حروف عربية او انجليزية .. لدي خبرة في الregular expression ولكن حلي ليس مناسب بالطريقة المطلوبة

فاستخدمت المفتاح
كود PHP:
<?
$arabic 
'اأآؤءئبتثجحخدذرزسشـصضطظعغفقكلمنهوية'
$patern '/^[a-z0-9'.$arabic.' ]{6,}$/i';
preg_match($patern,$_POST['name']); //مثال لمدخل من الinput
?>
وهذا يعطي نتيجة غريبة بعض الشيء .. هو يعمل بالشكل المطلوب ولكن اريد اقتراحات اكثر كفائة من هذا الحل .. لان الASP لهم المفتاح باستخدام الامر uXXXX\ وال "XXXX" ترمز لارقام من نوع الHEX و للPHP حل شبية وهو xYY\ و ال"YY" ترمز لرقمين فقط في الHEX وكما نعلم اللغه العربية موجودة في الجدول التي هي اكبر من رقمين ..

والمشكلة الثانية .. لغة الPEARL تدعم المفتاح u\ ولكن الpreg الموجودة في الPHP التي هي مبنية على لغة الPEARL لا تدعمة داخل الPHP .. وهذا ينطبق على الاصدار 4 و 5.

=======
هامش:
المشكلة .. ان هذا السؤال لم اجد حلة في المنتديات الاجنبية ولا احد قد سئل عنة في اي من المتديات العربية، وان شاء لله يوجد هنا اشخاص قد يكونوا محترفين لإقتراحي بحلول انسب. والى الان هذا هو سؤالي الثاني فقط في سوالف رغم المئات من الردود التي وضعتها .. سؤالي الاول .. لم اجد حل لها الى الان .. وهو ايضاً سؤال معقد برمجياً.






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 19-05-2007, 08:52 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#2 (permalink)  

وعليكم السلام

كود PHP:
<? 
$arabic 
'ا-ي';
$patern '/^[a-z0-9'.$arabic.' ]{6,}$/i';
preg_match($patern,$_POST['name']);
?>
أعتقد أن preg ستدعم اللغة العربية في هذه الحالة ...

لكن أشعر وكأنك تتحدث عن تخزين البيانات في قاعدة البيانات عن طريق الجافاسكربت مثلاً بصيغة Unicode .. فلو قمت بعمل escape للبيانات قبل تخزينها بواسطة الجافاسكربت فإنها ستتحول إلى :
كود:
%uXXXX
والـ XXXX أيضاً هي 4 خانات بصيغة hex .. لو أردنا قراءة هذه الصيغة بالعربية سنقوم بتحويل الصيغة نفسها إلى :
كود:
&#XXXX;
حيث 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($text0strlen($text)-7);
                } else {
                    
$text substr($text0strlen($text)-1);
                }
                
$x++;
            }
        }

        if (
$text != $origtext) {
            
$text .= "..";
        }

        return 
$text;
    } 
ربما قد تجد فيهما شيئاً يساعدك على تحقيق ما تريد ....

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

تحياتي، sBForum ( سابقاً )






الحق يعلو غير متواجد حالياً   قديم 19-05-2007, 10:25 AM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#3 (permalink)  

السلام ... شكراً على ردك .. وجدت طرقة حلوة وهو باستخدام الmodifyer التي تضع في الاخير الى وهو u... اي قبل عملية البحث يحاول ان يستعمل الPCRE_UTF8 وهو بالتالي يصحح بعض من المتاعب

فإذا استخدمت
كود PHP:
<?
$arabic 
'اأآؤءئبتثجحخدذرزسشـصضطظعغفقكلمنهوية'
$patern '/^[a-z0-9'.$arabic.' ]{6,}$/i';
preg_match($patern,$_POST['name']);
?>
ستجد انة يقبل 6 او اكثر حروف انجليزية و يقبل 3 حروف عربية وما فوق.

و المطلوب هو ان يستقبل 6 حروف او اكثر سواء كانت عربية ام انجليزية .. حلي الاول كان في

كود PHP:
<?
$arabic 
'اأآؤءئبتثجحخدذرزسشـصضطظعغفقكلمنهوية'
$patern '/^[0-9'.$arabic.' ]{6,}|[0-9a-z]{6,}$/i';
preg_match($patern,$_POST['name']);
?>
هذا حل ولكن اذا استعملت العربية والاتينية في نفس الجملة سيعطيك نتيجة غريبه بعض الشيء .. فالحل الذي توصلت الية وهو


كود PHP:
<?
$arabic 
'اأآؤءئبتثجحخدذرزسشـصضطظعغفقكلمنهوية'
$patern '/^[0-9a-z'.$arabic.' ]{6,}$/iu';
preg_match($patern,$_POST['name']);
?>
وهذا هو الحل الحالي اللذي اراة مناسب .. ولكن على ما اعتقد هناك مكان للتحسين .. انا استعملة حاليا في مشروعي الجديد www.hilaby.com/sites

مشكلة الجافا سكربت محلولة وبطريقة مناسبة .. ولكن اود اقتراحات الشباب من ناحية السرفر






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 19-05-2007, 10:58 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Sep 2006-
#4 (permalink)  

المشكلة تكمن في تحديد نطاق لحروف اللغة العربية للبحث خلاله عن طريق التعابير الاعتيادية. يمكننا استخدام أحد أصناف الحروف التي تقوم "التعابير الاعتيادية المحسَّنة ERE" بتعريفها للتعبير عن الحروف والأرقام وهو الصنف [:alnum:] لحل تلك المشكلة.

كذلك نعلم أن حروف اللغة العربية من النوع Multibyte لذلك سنتعامل معها علي هذا الأساس.

كود PHP:
$result mb_ereg("^[[:alnum:] ]{6,}$""سوالف swalif 2008");
var_dump($result); 
برجاء تجربة هذه الطريقة لمعرفة مدي توافقها مع جميع الأنظمة.






التصميم غير متواجد حالياً   قديم 02-04-2008, 04:05 AM
رد مع اقتباس
رد


أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
عندي دومين بس اريد اقتراحات aitserv.com OmanHD تطوير الويب 0 05-02-2007 07:55 AM
Arabic - Regular expression ما الحل b happy PHP 12 09-11-2006 03:23 PM
daif و الجميع اريد هذا الهاك من اجل البوم الصور 4images beshoo تطوير الويب 9 27-06-2003 10:07 AM


الساعة الآن: 01:45 AM بتوقيت المملكة العربية السعودية