PHP’de preg_replace_callback() ile KısaKod [ShortCode] Yapımı


PROBLEM:

Bu yazıda amacımız, PHP 5.3’te,

“[bh]İstiklal Marşı[/bh] Türkiye’nin Milli Marşıdır ve yazarı Mehmet Akif [bh]Ersoy[/bh]’dur.”

gibi bir string (text) içinde geçen

[bh]İstiklal Marşı[/bh] ve [bh]Ersoy[/bh]

gibi bizim belirlediğimiz bir etiketle (bh) işaretlenmiş bir yazıyı,

İSTİKLAL MARŞI ve ERSOY

şeklinde tüm harflerini büyük harfe dönüştürmek.


Diğer bir tabirle, kısa kod (short code) adını verdiğimiz köşeli parentezler kullanılarak oluşturulan [bh] ve [/bh] tagları/etiketleri arasına gelen yazının tüm harflerini büyük harflere dönüştüreceğiz ve bu etiketler eriyip yok olacak.

ÇÖZÜM:

<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>
 
<?php
 
$text = "[bh]İstiklal Marşı[/bh] Türkiye'nin Milli Marşıdır";
$text .= " ve yazarı Mehmet Akif [bh]Ersoy[/bh]'dur.";
 
echo "ÖNCESİ: <br />";
echo $text;
 
$text = kisakod_bh($text);
echo "<br />SONRASI: <br />";
echo $text; //İSTİKLAL MARŞI Türkiye'nin Milli Marşıdır ve yazarı Mehmet Akif ERSOY'dur. 
 
function kisakod_bh($text) {
 
	return preg_replace_callback('/\[bh(.*)\](.*)\[\/bh\]/isU',
		function ($m) {
			$str = strtr($m[2], array("i" => "İ"));
			return mb_strtoupper($str, 'utf-8');
   		 },
 		$text);
 
}
?>
 
</body></html>

Kaynaklar:

PHP: preg_replace_callback – Manual

PHP: mb_strtoupper – Manual

  1. Henüz hiç yorum yok.
(yayınlanmayacak)

Please leave these two fields as-is: