السبت، 3 أغسطس 2013

دالة لإضافة Nofollow للروابط الخارجية تلقائيًا


نحتاج كثيرًا فى برامجنا إلى وضع خاصية nofollow للرابط فى برنامجنا للمزيد من التعاون مع محركات البحث، قد يتطلب منك القيام بتلك المهمة الكثير من الوقت والجهد، الآن أوفر لكم دالة جاهزة تستطيع من خلالها ادراج nofollow إلى خاصية rel فى جميع الروابط، وإذا كان هنالك قيمة أخري فى rel سيقوم بإضافة nofollow عليها ولن تقوم الدالة بإستبدالها بالكامل.
- مثال:
<a href="#" rel="tag">Welcome</a>
سيتم تحويلها إلى:
<a href="#" rel="tag nofollow">Welcome</a>
لذلك تلك الدالة هي دالة ذكية جدًا، وتلك الدالة تستخدم بارامتر واحد فقط ألا وهو المتغير الذي يحتوى النص الداخل به روابط <a>.
- مثال على الإستخدام:
$string = '<a href="#">Welcome</a>
<a href="#" rel="">Welcome</a>
<a href="#" rel="tag">Welcome</a>
<a href="#" rel="nofollow">Welcome</a>';
add_no_follow($string);
بعد تلك السطور سيصبح المتغير $string يحتوى على هذا النص:
<a href="#" rel="nofollow">Welcome</a>
<a href="#" rel="nofollow">Welcome</a>
<a href="#" rel="tag nofollow">Welcome</a>
<a href="#" rel="nofollow">Welcome</a>
والآن معكم الشيفرة المصدرية للدالة التى يمكنك نسخها وإستخدامها فى برامجكم.
function add_no_follow($str){
$dom = new DOMDocument;
$dom->loadHTML($str);
$anchors = $dom->getElementsByTagName('a');
foreach($anchors as $anchor) {
$rel = array();
if ($anchor->hasAttribute('rel') AND ($relAtt = $anchor->getAttribute('rel')) !== '') {
$rel = preg_split('/\s+/', trim($relAtt));
}
if (in_array('nofollow', $rel)) {
continue;
}
$rel[] = 'nofollow';
$anchor->setAttribute('rel', implode(' ', $rel));
}
$dom->saveHTML();
$html = '';
foreach($dom->getElementsByTagName('body')->item(0)->childNodes as $element) {
$html .= $dom->saveXML($element, LIBXML_NOEMPTYTAG);
}
return $html;
}
المزيد من المواضيع:

0 التعليقات:

إرسال تعليق