صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 16

الموضوع: من لديه أفضل تركيبة REGEX تصلح لكافة أشكال هذه الروابط ..

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065

    من لديه أفضل تركيبة REGEX تصلح لكافة أشكال هذه الروابط ..



    السلام عليكم ورحمة الله وبركاته

    كود PHP:
    http://crazy-eng.com
    ftp://crazy-eng.com
    http://crazy-eng.com/links/a.php?ss=ss&sd=rew,addf=rrr&k
    http://crazy-eng.com/ssdsd.html?sdsa=aas
    http://crazy-eng.com/dsdfwd.php?sadqw=dedf
    http://crazy-eng.com/dsadfsds/
    http://crazy-eng.com/tamo.asp
    http://crazy-eng.com/sds.aspx
    http://www.google.com.eg/search?q=comma+url+regex&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
    http://domain.com/something/0,123,3.html 
    http://index.php?page=main,id=123
    http://1000mazad.com/Cell-Phone-Watch-Mobile,name,100233,auction_id,mazad_details 
    الروابط أعلاه لها أشكال عديده أريد REGEZ واحد يمكنه التعامل معها جميعاً

    أنا لدى هذا الREGEX و الذى يمكنه التعرف علي معظمها ماعد الذى يحتوى على comma

    و كذلك بعض الروابط قد تحتوى على )( [] أقواس

    كود PHP:
    /(((https?|ftp):\/\/[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}\/*([\w\/\.\?&=]+)*)+^[0-9]+([,]\s?\([A-Za-z0-9]+))$)/is 
    الفكرة أنه فى موقع إختصار الروابط تلى تل كنت أستخدم داله معقده فكانت تضايق الكثيرين .. و عندما إستغنيت عن جزء من هذه الداله أصبح الناس يجربون الروابط الفاشله مثل
    http:////
    http://d
    http://develop_ur_self

    و حاجات من هذا القبيل



    كود PHP:
    function validateURL($url){ 
    $urlregex "^(https?|ftp)\:\/\/"

    // USER AND PASS (optional) 
    //$urlregex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?"; 

    // HOSTNAME OR IP 
    //$urlregex .= "[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*";  // http://x = allowed (ex. http://localhost, http://routerlogin) 
    //$urlregex .= "[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)+";  // http://x.x = minimum 
    //$urlregex .= "([a-z0-9+\$_-]+\.)*[a-z0-9+\$_-]{2,3}";  // http://x.xx(x) = minimum 
    //use only one of the above 

    // PORT (optional) 
    //$urlregex .= "(\:[0-9]{2,5})?"; 
    // PATH  (optional) 
    //$urlregex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?"; 
    // GET Query (optional) 
    //$urlregex .= "(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?"; 
    // ANCHOR (optional) 
    //$urlregex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?\$"; 

    // check 
    if (eregi($urlregex$url)) {return "good";} else {return "bad";}  










  2. #2
    عضو جديد
    تاريخ التسجيل
    Sep 2006
    المشاركات
    20


    السلام عليكم

    راجع هالموضوع هيفيدك :
    http://www.swalif.net/softs/swalif45/softs229271/





    __________________
    سبحان الله و بحمده .. سبحان الله العظيم
    الوقت كالسيف .. ان لم تقطعه ... قطعك !
    رحمك الله يا جابر الخير ....

  3. #3
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    لقد فشل الكود الخاص بك في الحالة:
    http://develop_ur_self
    كود HTML:
    /(((https?|ftp)://[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}/*([\w\/\.\?&=]+)*)+^[0-9]+([,]\s?\([A-Za-z0-9]+))$)/is  
    لأنك نسيت ان تعمل اسكيب للنقطة التي تسبق .com (النهاية)
    وكذلك انا نسيت عندما نقلتها عنك وانا ابني كودي.

    لقد كتبت كود تتأكد بنسبة جيدة جدًا من صحة الرابط. وفكرة هذا الكود ان يتم حصر الفحص على عنوان الموقع example.com
    اذ ان اسم النطاق والصب دومينات تحوي فقط الاحرف والارقام والنقطة والداش(-).
    اما بالنسبة لإسم الصفحة والبارمترات الاخرى فلم افحصها لأنها تقبل كافة الرموز وليس الحروف والارقام فقط.
    للتأكد من ذلك:
    http://localhost/auth/test.php?my=!@$%^*%28%29_-=+~,.[]%27%22
    اطبع المتغير my ستجد انه تم التعرف على هذه الرموز بدون مشاكل

    الكود الذي كتبته:
    كود PHP:
    <?php
    $url 
    ="http://www.google.com.eg/search?q=comma+url+regex&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a";
    $arr = (@parse_url($url)==TRUE)? @parse_url($url): "error" ;
    $regex "/[0-9a-zA-Z\-]+(\.[\-0-9a-zA-Z]+)*\.[a-zA-Z]{2,4}/";
    $reg "/(http|https|ftp)/";
     
    preg_match($reg,$arr['scheme'],$m);
     
    preg_match($regex,$arr['host'],$match);

     if (
    $m[0] === $arr['scheme'] && $match[0] === $arr['host'] &&!empty($match[0]) &&!empty($m[0]))
     echo 
    "ok";
     else echo 
    "not ok";
     


     echo 
    "<h3>".$_GET['my']."</h3>";
    ?>
    قمت باستخراج اسم النطاق بواسطة الدالة parse_url ثم قمت بتشغيل التعبير القياسي عليه للفحص. وقد قام بقبول جميع الأمثلة التي وضعتها.



    ارجو ان تقوم بفحص الكود مرة اخرى وان تخبرني بالأخطاء التي تواجهها حتى يخرج الكود بالصورة اللائقة ان شاء الله.





    التعديل الأخير تم بواسطة ahmad sadiq ; 05-04-2010 الساعة 01:11 AM

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065


    يعمل بشكل رائع

    و لكن هذا لا يعمل

    كود HTML:
    https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=1270456569&rver=5.5.4177.0&wp=MBI&wlcxt=title&wreply=https%3a%2f%2fauth.bay.livefilestore.com%2fstorageservice%2fpassport%2flogin.aspx%3fcid%3d-6783062567200032788%26cru%3dhttp%253a%252f%252fcid-29d744d5d79e58fe.skydrive.live.com%252fbrowse.aspx%252f.Public%252fTESTOUT%252520801%25255E0802%252520full%252520CD%253flc%253d58377%2526sa%253d509171154&id=250915&lc=1033







  5. #5
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    الكود لم يعمل بسبب طريقة الفحص:
    كود PHP:
    $reg "/(http|https|ftp)/"
    في حالة ال https كان يجد ال http ويعود بها، وعند مقارنتها مع بادئة الموقع الأصلي والتي استخرجناها بواسطة
    parse url
    كان الكود يفشل

    للتصحيح:
    كود:
    $reg = "/(https|http|ftp)/";
    وضعنا ال https اولا حتى اذا وجدها يعود بها اولا وان لا، تكون النتيجة: http






  6. #6
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065


    كود HTML:
    https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=1270456569&rver=5.5.4177.0&wp=MBI&wlcxt=title&wreply=https%3a%2f%2fauth.bay.livefilestore.com%2fstorageservice%2fpassport%2flogin.aspx%3fcid%3d-6783062567200032788%26cru%3dhttp%253a%252f%252fcid-29d744d5d79e58fe.skydrive.live.com%252fbrowse.aspx%252f.Public%252fTESTOUT%252520801%25255E0802%252520full%252520CD%253flc%253d58377%2526sa%253d509171154&id=250915&lc=1033
    مرر منه هذا المقطع فقط و لم يمرر الباقى

    كود HTML:
    https://login.live.com/login.srf?wa=wsignin1.0







  7. #7
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    لقد فحصت الرابطين الذين قمت بوضعهما وقد نجحا...
    اصلا ً لا يوجد فرق بينهما لأني افحص اسم النطاق و http|https|ftp فقط

    هذا هو الكود مرة اخرى بعد التعديل:
    كود PHP:
    <?php
    $url 
    ="https://wave.google.com/wave/?pli=1";
    function 
    checkUrl($url){
    $arr = (@parse_url($url)==TRUE)? @parse_url($url): "error" ;
    $regex "/[0-9a-zA-Z\-]+(\.[\-0-9a-zA-Z]+)*\.[a-zA-Z]{2,4}/";
    $reg "/(https|http|ftp)/";
     
    preg_match($reg,$arr['scheme'],$m);
     
    preg_match($regex,$arr['host'],$match);

     return  (
    $m[0] === $arr['scheme'] && $match[0] === $arr['host'] &&!empty($match[0]) &&!empty($m[0]));
     }

    echo (
    checkUrl($url)==1)?"valid":"not valid";
     
    ?>







  8. #8
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    لمن لا يحب التعابير القياسية، هناك دوال الفلترة الخاصة بال php
    http://il.php.net/manual/en/function.filter-var.php
    وتاخذ هذه "الثوابت"
    http://il.php.net/manual/en/filter.constants.php

    أمثلة- فحص الايميل والرابط:
    كود PHP:
    var_dump(filter_var('bob@example.com'FILTER_VALIDATE_EMAIL));
    var_dump(filter_var('example.com'FILTER_VALIDATE_URLFILTER_FLAG_SCHEME_REQUIRED)); 
    في حالة التأكد من صحة شكل الرابط لم تكن قوية بما يكفي.






  9. #9
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    شوف:
    كود PHP:
    <?php
    $url 
    ="https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=1270456569&rver=5.5.4177.0&wp=MBI&wlcxt=title&wreply=https%3a%2f%2fauth.bay.livefilestore.com%2fstorageservice%2fpassport%2flogin.aspx%3fcid%3d-6783062567200032788%26cru%3dhttp%253a%252f%252fcid-29d744d5d79e58fe.skydrive.live.com%252fbrowse.aspx%252f.Public%252fTESTOUT%252520801%25255E0802%252520full%252520CD%253flc%253d58377%2526sa%253d509171154&id=250915&lc=1033";
    function 
    checkUrl($url){

    $regex "/^(https|http|ftp)\:\/\/[0-9a-zA-Z\-]+(\.[\-0-9a-zA-Z]+)*\.[a-zA-Z]{2,4}\/(.*)/";

     

     return 
    preg_match($regex,$url,$match);
     }

    echo 
    checkUrl($url)?"valid":"not valid";
     
    ?>







  10. #10
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065


    سأشرح لك المشكله كلها

    الآن أنا أستخدم هذا الكود

    كود PHP:
    function validateURL($url){ 

    $arr = (@parse_url($url)==TRUE)? @parse_url($url): "error" ;
    $regex "/[0-9a-zA-Z\-]+(\.[\-0-9a-zA-Z]+)*\.[a-zA-Z]{1,4}/";
    $reg "/(https|http|ftp)/";
     
    preg_match($reg,$arr['scheme'],$m);
     
    preg_match($regex,$arr['host'],$match);

     if (
    $m[0] === $arr['scheme'] && $match[0] === $arr['host'] &&!empty($match[0]) &&!empty($m[0]))
     {return 
    "good";} else {return "bad";}  
        } 
    عند إستخدام هذا الريجكس

    $regex = "/[0-9a-zA-Z\-]+(\.[\-0-9a-zA-Z]+)*\.[a-zA-Z]{1,4}/";

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


    $regex = "/[0-9a-zA-Z\-]+(\.[\-0-9a-zA-Z]+)*\.[a-zA-Z]{2,4}\/(.*)/";

    عند إستعمال هذا لا يقصره أساساً و يرجع bad






  11. #11
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065


    أحمد المشكله فى التولبار لأنه أنا كنت بستخدمه فى التجربه

    شوف الكود فيه إيه و إعمله

    و نزل آخر إصدار و عدل عليه مش تعدل اللى عندك






  12. #12
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065


    أنا حليت المشكله

    المشكلة كانت إنه أنا بستلم عنوان الصفحه عن طريق url=xxxx

    ال xxx دا كان فيه حاجه زى &aaaa=aaaa

    و بالتالى لما كنت بستلم $_GET[url] كانت بتقف لحد &aaaa=aaaa لأنه يعتبر براميتر جديد


    عشان كدا أنا إستعملت طريقة أفضل و هى الحصول على العنوان كاملاً للصفحة الحالية و إزالة إسم موقعى منه



    أنا كدا حليت كل المشاكل حتى مشكلة التولبار إتحلت من الصفحة اللى إنت عارفها .. لكن فى التولبار نفسه المشكله لسا موجوده





    التعديل الأخير تم بواسطة khashabawy ; 06-04-2010 الساعة 02:27 AM

  13. #13
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600

  14. #14
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065


    كنت أستعملها وكانت تحدث مشكلة أخرى

    لدرجة أنى عملت دالة لعمل إنكود ... وفشل الأمر

    المشكله الآن فى التولبار .. أريدك أن تقوم بالتالى :

    نزل آخر إصدار 2.7

    قم بتعديل الكود بحيث .. لايقوم بالإرسال عن طريق الحصول على مكونات الفورم التى عملناها مسبقاً و إنما عن طريق إرسال الرابط لصفحة http://tli.tl/apiff/

    و يأخذ الناتج كله و يخرجه للزبون


    ملحوظه : انا قمت بتعديل كود ال PHP الآن لكى يعمل على التعديل الذى ستقوم انت به ... التولبار لا يعمل الآن





    التعديل الأخير تم بواسطة khashabawy ; 06-04-2010 الساعة 03:48 PM

  15. #15
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600





ضوابط المشاركة

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

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض