/
  • بازسازی نشانی

  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 5
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی بازسازی نشانی
    نویسنده پیام
    king_net آفلاین
    عضو
    ***

    ارسال‌ها: 62
    تاریخ عضویت: ۱۳۸۹ اسفند ۲۱
    اعتبار: 0
    تشکرها : 91
    ( 9 تشکر در 4 ارسال )
    ارسال: #1
    بازسازی نشانی
    درود . جدیدا اینجا شده پاتوق من Big Grin بگذریم Cool
    دوستان من می خوام یک فانکشن بسازم واسه بازسازی و تعمیر لینک ها .
    فرض کنید که ما دوتا لینک دارم ، یکیش رو base قرار می دیم و اون یکی رو می خوایم بازسازی کنیم . می دونم نفهمیدید چی می گم ، بیشتر توضیح می دم Tongue در واقع من یک فانکشن هوشمند برای بازسازیِ لینک ها می خوام ،‌تا یکجاهایشو تونستم پیش ببرم اما تو بعضی جاهاش گیر کردم .
    تا الان من تونستم سه حالت رو پشتیبانی کنم :
    1 - لینک هایی که با / شروع می‌شن.
    2 - لینک هایی که با ./ شروع می‌شن.
    3 - لینک هایی که اولشون با حروف شروع می شه.

    این دست پختِ من تا اینجا :
    کد PHP:
    function repair($url,$base){
        
    $parse parse_url($url);
        if(!empty(
    $parse['host'])){$out $url;}
        elseif(
    $url{0} == '/'){$url substr($url,1);$out $base.$url;}
        elseif(
    $url{0} == '.' && $url{1} == '/' ){$url substr($url,2);$out 'http://'.domain($base).'/'.$url;}
        else{
    $out $base.$url;}
        return 
    $out;
    }
    # echo repair('/post/1','http://test.com/');
    # echo repair('post/1','http://test.com/');
    # echo repair('./post/1','http://test.com/'); 
    این فانکشن تا اینجا بسیار عالی کار کرده Big Grin اما تو سورس یکی از سایت ها دیدم که تو ادامه مطلبش ، لینک رو کامل نداده بود یعنی با / شروع کرده بودDodgy دیدم که فانکشنم دیگه عالی کار نمی کنه Confused
    اینا ها اگه میشه خودتون تست کنید :
    کد PHP:
    echo repair('/conteudo/sobre-o-gizmodo-brasil','http://www.gizmodo.com.br/conteudo/exclusivo-novo-galaxy-chega-ao-brasil-no-inicio-de-maio-mas-ele-nao-e-o-s-iii-que-todos-esperam/'); 
    دوستان می تونید تو این مورد کمک کنید بد جور به مشکل خوردم Confused در واقع من یک روش می خوام که base رو بهش بدی بعد اگه لینک رو به حالت های مختلف دادی بهش بتونه بازسازی کنه و لینکِ درست رو برگردونه . یعنی میشه Huh
    (آخرین ویرایش در این ارسال: ۱۳۹۱ ارديبهشت ۲ ۰۹:۳۵ عصر، توسط king_net.)
    ۱۳۹۱ ارديبهشت ۲ ۰۹:۳۵ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    king_net آفلاین
    عضو
    ***

    ارسال‌ها: 62
    تاریخ عضویت: ۱۳۸۹ اسفند ۲۱
    اعتبار: 0
    تشکرها : 91
    ( 9 تشکر در 4 ارسال )
    ارسال: #2
    RE: بازسازی نشانی
    اسپم Dodgy up ! Confused
    ۱۳۹۱ ارديبهشت ۳ ۰۶:۳۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    oia آفلاین
    محمد ثانی
    *****

    ارسال‌ها: 2,012
    تاریخ عضویت: ۱۳۸۷ آذر ۲۶
    اعتبار: 66
    تشکرها : 2330
    ( 2091 تشکر در 1290 ارسال )
    ارسال: #3
    RE: بازسازی نشانی
    یه لینک رو می خوای ریپیر کنی ؟
    یعنی می خوای چیکارش کنی که ریپیر می شه؟
    متغیر url چیه ؟
    متغییر base چیه ؟
    متغیر out که برگشت داده می شه چیه ؟
    ۱۳۹۱ ارديبهشت ۳ ۰۷:۰۳ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Reza king_net
    king_net آفلاین
    عضو
    ***

    ارسال‌ها: 62
    تاریخ عضویت: ۱۳۸۹ اسفند ۲۱
    اعتبار: 0
    تشکرها : 91
    ( 9 تشکر در 4 ارسال )
    ارسال: #4
    RE: بازسازی نشانی
    (۱۳۹۱ ارديبهشت ۳ ۰۷:۰۳ عصر)oia نوشته شده توسط:  یه لینک رو می خوای ریپیر کنی ؟
    یعنی می خوای چیکارش کنی که ریپیر می شه؟
    متغیر url چیه ؟
    متغییر base چیه ؟
    متغیر out که برگشت داده می شه چیه ؟
    بله
    یعنی دو تا ورودی بگیره یکی رو بر اساسِ اون یکی رپیر کنه.
    متغیر url لینکی هست که باید ریپیر شه
    متغیر base همونیه که متغیرِ url در صورتِ نیاز ازش استفاده می کنه و لینک رو تعمیر می کنه مثال:
    کد PHP:
    $base http://www.google.com/
    $url = /mail 
    این دوتا متغیر برای ورودی های فانکشن هست حالا کاری که فانکشن میکنه اینه که $url که به صورت ناقص هستش رو به لینکِ صحیح تبدیل می کنه یعنی خروجیش میشه این : http://google.com/mail
    تا اینجاش مشکلی نداره یعنی اگر صفحه اول رو به عنوان base قرار بدی به طورِ کامل کار می کنه اما اگه لینکِ صفحه اول نباشه مثله اونی که تو پست اول مثال زدم ، به مشکل می خوره Confused
    متغیر out در واقع لینکِ تصحیح شده هستش که در انتها به عنوان خروجیِ تابع استفاده میشه .
    (آخرین ویرایش در این ارسال: ۱۳۹۱ ارديبهشت ۳ ۰۸:۱۳ عصر، توسط king_net.)
    ۱۳۹۱ ارديبهشت ۳ ۰۸:۱۳ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #5
    RE: بازسازی نشانی
    خب باید سه حالت رو در نظر بگیری
    اگر لینک با http شروع شده باشه که مشخصه خود لینک کامل هست
    اگر با / شروع شده باشه فقط باید با دامین به همراه سابدامین بررسی بشه
    اگر هم که غیر از اینها بود که باید به لینک اصلی بچسبه
    __________________________________________________________________________
    http://mydolphin.ir
    ۱۳۹۱ ارديبهشت ۴ ۱۲:۰۶ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : king_net
    oia آفلاین
    محمد ثانی
    *****

    ارسال‌ها: 2,012
    تاریخ عضویت: ۱۳۸۷ آذر ۲۶
    اعتبار: 66
    تشکرها : 2330
    ( 2091 تشکر در 1290 ارسال )
    ارسال: #6
    RE: بازسازی نشانی
    کد PHP:
    <?PHP

    /**
     * create web link
     * this function create new link from domain and path
     * @copyright    iranphp(c)2012
     * @param        $url    string    this is a true url
     * @param        $path    string    this is a new path form domain
     * @return        string    the new link from domain and path
     * @return        bool    flase, if url is not true    
     */
    function web_link($url$path)
    {
        if(!
    is_url($url)){
            return 
    false;
        }
        
        
    $protocol read_protocol($url);
        
    $domain read_domain($url);
        
    $path ltrim($path'./');
        
    $link $protocol.'://'.$domain.'/'.$path;
        
        return 
    $link;


    تابعت رو اینجوری پیاده سازی کن.
    1. ورودی هات رو چک کن.
    2. مقدار دامین رو از url بخون (با استفاده از یه تابع دیگه)
    3. لینکت رو بساز.

    سه تابع is_url و read_domain و read_protocol رو من پیاده سازی نکردم. مشابهشون زیاده.
    ۱۳۹۱ ارديبهشت ۴ ۱۱:۰۵ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : king_net
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS