نوفالو لینک خارجی در php

نوفالو لینک خارجی در php

دسته : Php

کد محصول : 48

قیمت : رایگان

نوفالو کردن لینک های خارجی در php با استفاده از DOMDocument برای سایت هایی که اجازه ثبت مطالب و سوالات را در سایت خود، برای کاربران دارند مورد نیاز می باشد. با این کار، شما صحت درست بودن مطالب لینک مربوطه را به عهده خود ربات های خزنده می دهید. این آموزش کوتاه php جاب تیم را با دقت مطالعه کنید. پس وقتی اطلاعات را از دیتابیس واکشی می کنیم و می خواهیم مطالب را به کاربر نشان دهیم با یک تابع در php این کار را می کنیم. البته پیشنهاد ما این است که در هنگام ذخیره کردن مطلب در دیتابیس...


نوفالو کردن لینک های خارجی در php با استفاده از DOMDocument برای سایت هایی که اجازه ثبت مطالب و سوالات را در سایت خود، برای کاربران دارند مورد نیاز می باشد. با این کار، شما صحت درست بودن مطالب لینک مربوطه را به عهده خود ربات های خزنده می دهید. این آموزش کوتاه php جاب تیم را با دقت مطالعه کنید.

پس وقتی اطلاعات را از دیتابیس واکشی می کنیم و می خواهیم مطالب را به کاربر نشان دهیم با یک تابع در php این کار را می کنیم. البته پیشنهاد ما این است که در هنگام ذخیره کردن مطلب در دیتابیس این کار را انجام دهید و هزینه (درصد استفاده از cpu) را کاهش دهید چرا ؟ با فرض اینکه سایت شما 1000 کاربر فعال دارد و هرکدام هر مقاله ای از سایت که این تابع را برای nofollow  کردن لینک ها انجام می دهد را اجرا کند خوب چه سربار سنگینی به سرور وارد می شود!!!

این کار را شما می توانید به صورت سه روش ذیل انجام دهید:

  • جستجو و replace کردن در خود دیتابیس با اتفاق افتادن یک رویداد با استفاده از پروسیجر
  • replace کردن قبل از ثبت با استفاده از php
  • replace کردن در هنگام نمایش با php

ما فعلا nofollow کردن با php  هنگام نمایش مطلب رو در این مطلب توضیح خواهیم داد. ما پیش فرض فکر می کنیم که شما یک کلاس دارید که برای نمایش پست ها مورد استفاده قرار میگیرد پس توابع ذیل رو بهش اضافه می کنیم (البته می توانید از توابع static استفاده کنید که در تمام قسمت ها راحت بتونید استفاده کنید)

مراحل کار در کلا:

  • در کلاس مورد نظرمون تابع getRootDomain رو اضافه می کنیم این تابع برای تشخیص لینک های داخل مطلب هستش که آیا لینک جزو لینک های داخلی خود سایتمون هست یا یک لینک خارجی؟
public function getRootDomain($url)
    {
        if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
            $url = "http://" . $url;
        }
        return implode('.', array_slice(explode('.', parse_url($url, PHP_URL_HOST)), -2));
    }
  • باز در کلاس مورد نظر تابع اصلی رو درست می کنیم که متن رو replace کنیم
 public function Nofollow($text)
    {
        $domains = array('jobteam.ir');
        $dom= new \DOMDocument();
        $dom->loadHTML('<?xml encoding="utf-8" ?>' .$text);
        $dom->preserveWhiteSpace = false;
        $dom->formatOutput = true;
        foreach ($dom->getElementsByTagName('a') as $link) {
            $href = $link->getAttribute('href');
            if (!in_array(self::getRootDomain($href), $domains)) {
                $link->setAttribute('rel', 'nofollow');
            }
        }
        return $dom->saveHTML();
    }

کلاس DOMDocument که داخل تایع nofollow هستش پیش فرض در php موجود می باشد و نیازی به نصب ندارد. بعد از اتمام کار در نمایش پست متنی که می خواهید لینک های خارجی آن به صورت nofollow شود را قبل چاپ به تابع nofollow پاس دهید. نحوه استفاده به صورت ذیل

echo Nofollow($query->text) 

 

  • نوفالو لینک خارجی در php را با دوستان خود به اشتراک بگذارید.
  • سوالات خود را در بخش پرسش و پاسخ این مطلب ثبت کنید.
  • مطالب خود را در جاب تیم به اسم خود ثبت کنید ارسال مطلب


ثبت سوال/پاسخ
بهزاد میرزازاده
در مورد کاربر : همیشه سخت تلاش کردم و به موفقیت های خیلی زیادی رسیدم اما دلیل نشد که متوقف بشم من برای هر روز برنامه دارم و به امید موفقیت های بزرگتر قدم بر میدارم همیشه سخت ترین مسئله ها، ساده ترین راه حل رو دارند پس بهانه جویی نباید روش کار ما برنامه نویسان باشه!!! ما می توانیم آینده را تعیین کنیم
اشتراک گذاری این مطلب
{