PHP Dersleri

PHP İle Yazı İçindeki Adresleri Otomatik Linkleme

Yazı içerisinde yer alan linklerin HTML etiketi ile düzenlenerek link şeklinde sunulması, PHP Programlama dili ile mümkündür. Yazı içerisinde yer alan linki tesbit etmek ve bu linki şekillendirmek için preg_replace() fonksiyonu kullanılmaktadır. Bu fonksiyonu kullanırken ReGEx desenlerinden yardım alınmaktadır. İlk olarak yazı içerisinde yer alan linklerin tesbiti için bir ReGEx deseni belirlenmelidir. Sonrasında bu desenden elde edilecek olan değer HTML’deki A etiketine uyarlanmalıdır. Uyarlama işlemi sonrasında çıktı alınarak yazı içerisindeki adreslerin linklenmesi sağlanır.

ReGEx Deseni ve A Etiketini Oluşturma

Bu işlemi gerçekleştirmek için öncelikle ReGEx deseni oluşturmak gerekmektedir. Yazı içerisinde yer alan adreslerin tesbiti için aşağıda yer alan deseni kullanabilirsiniz.

`([^"=\'>])((http|https|ftp)://[^\s<]+[^\s<\.)])`i

Yukarıda yer alan desende http, https ve ftp gibi ifadeler yazı içerisinden alınacaktır. Alınan bu ifadeleri A etiketine girerek link yapılsı oluşturulur. Alınan ifadeler de aşağıdaki gibi A etiketine girilmelidir.

$1<a href="$2">$2</a>

Yukarıda yer aldğı gibi belirlenen link yapısı $2 ifadesiyle hem href bölümüne hemde A etiketinin içerisine yazılmış durumda. Bu şekilde oluşturulan bir yapı, preg_replace() fonksiyonu ile değiştirme ve uygulama işlemine tabi tutularak yazı içerisindeki adresilerin linklenmesi sağlanacaktır.

Yazı İçi Otomatik Link Verme

Yazı içi linkleme yapabilmek için preg_replace() fonksiyonundan yararlanmamız ve ReGEx desenini kullanmamız gerektiğinden bahsetmiştim. Şimdi yukarıda yer alan kodları birleştirerek işlemi gerçekleştirelim.

function otomatikLink($veri) {
   $veri = ' ' . $veri;
   $veri = preg_replace(
      '`([^"=\'>])((http|https|ftp)://[^\s<]+[^\s<\.)])`i',
      '$1<a href="$2">$2</a>',
      $veri
   );
   $veri = substr($veri, 1);
   return $veri;
}

$str = 'Merhaba ben ibrahim çevrük. Web site adresim https://www.ibrahimcevruk.com bana buradan ulaşabilirsiniz.';
echo  otomatikLink($str);

Yukarıda yer alan otomatikLink() fonksiyonu ile yazı içerisinde yer alan adresin linklenmesi sağlanacaktır. Fonksiyon içerisinde kullanılan preg_replace() ile adres bilgisi yakalanıp linkleme işlemi yapılmaktadrır.

Özellik Ekleyerek Otomatik Linkleme Yapma

Yukarıda yer alan fonksiyonda, yazı içerisinde yer alan adresler direkt olarak linklenecektir. Fakar bu linklere başka bir özellik girmek istediğinizde buna müsaade etmeyecektir. Bunun için hazırlamış olduğumuz fonksiyona ikinci parametre tanımlaması yaparak array(dizi) şeklinde göndereceğimiz bilgilerle bu işlemi gerçekleştirebiliriz.

<?php
function otomatikLink($veri, $ozellikler=array()) {
   $ekOzellik  = "";
   $veri       = ' ' . $veri;
   foreach ($ozellikler as $ozellik => $deger) {
	$ekOzellik .= " {$ozellik}=\"{$deger}\"";
   }
   $veri = preg_replace(
      '`([^"=\'>])((http|https|ftp)://[^\s<]+[^\s<\.)])`i',
      '$1<a href="$2"'.$ekOzellik.'>$2</a>',
      $veri
   );
   $veri = substr($veri, 1);
   return $veri;
}
$str = 'Merhaba ben ibrahim çevrük. Web site adresim https://www.ibrahimcevruk.com bana buradan ulaşabilirsiniz.';
echo otomatikLink($str, array("target"=>"_blank","rel"=>"nofollow"));
?>

Yukarıda yer alan örnekle birlikte sınırsız özellik eklenebilecek bir dizi yapısı oluşurmuş oluyoruz. Örnekte target ve rel tanımlaması yapılmıştır. Dilerseniz ek olarak class, id yada onclick gibi tanımlamalar yapabilirsiniz.

Daha Fazla Göster

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Kapalı