PHP de yazının bir kısmını bulup değiştirmek

Whistle

Ruhsuz Filozof
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.540
Çözümler
549
Beğeni
12.192
Puan
5.915
Ticaret Puanı
2
Merhabalar,
Bugün çok takıldığım bir şey vardı. İnternette tam olarak kaynak bulamadım ama sonradan hallettim bende size anlatmak istiyorum.
Anlık arama işlemi yaptıracağınız zaman aradığınız terimin gelen verilerde orijinaldeki gibi büyük ve küçük olmasını sağlamak istiyorsanız ilk önce yapmanız gereken metin içinde bulduğunuz kelimeyi orijinal yazıdan da almak.

Peki ne anlatmaya çalışıyorsun diyebilirsiniz. Mesela bir örnek veriyim;
PHP:
$yazi = "Sevgi Bileziği";
$aramaterimi = "sev";

echo str_ireplace($aramaterimi, "<strong>$aramaterimi</strong>", $yazi);
Bu kod ekrana şu şekilde yazı yazacaktır.

Not: str_ireplace => büyük ve küçük harf duyarlılığı olmadan değişim yapar.

Yani aranılan terimi bulduğu sonuçlarda kullanıcının gönderdiği gibi değiştiriyor. Örnek;
Ajax arama görüntü 1.jpg


Fakat benim ihtiyacım olan gelen sonuçlarda aradığım terimle aynı olan karakterleri kalın yapmak. Yani orijinal içerikte büyük ve küçük karakterler nasılsa birebir aynı olmasını istiyorum. Peki bunu nasıl yaptım.

Php'de strpos diye bir fonksiyon var bu fonksiyon bir stringde aradığınız şey bulunursa ilk dizinin anahtarını verir.

Örnek;
PHP:
stripos("Sevgi Bileziği", "sev");

Burada da stripos diyerek büyük ve küçük duyarlılığı olmadan arama yapmasını istedik ve aradığımız terim yazının hangi tarafındaysa ilk değerini verir. Bu ekrana 0 yazdıracaktır.

Biz şu şekilde arama yapsaydık;
PHP:
stripos("Sevgi Bileziği", "bile");
Ekran çıktısı şu olacaktır;

Bunu anladığımızı varsayıyorum.


Php'de birde yazıların uzunluğunu alabileceğiniz bir fonksiyon var. Bu da strlen fonksiyonudur.
Örnek;
PHP:
echo strlen("sev")
Ekran çıktısı şu olacaktır;

Bu işlemi tamamlamak için de bir tane daha fonksiyonu tanımam gerekiyor. Bu da substr(string, baslangic, uzunluk) fonksiyonudur.
Bu fonksiyon belirttiğiniz sayı aralığına göre yazıda yer alan kısmı alır. Örnek;
PHP:
echo substr("Sevgi Bileziği", 6, 3)
Bu ekrana şunu yazdırır.

Bunların hepsini öğrendiğimize göre uygulamamız için gerekli olan şu algoritmayı oluşturabiliriz o halde. :)
PHP:
$aramaTerimi = "sev";
$text = "Sevgi Bileziği"

$baslangic = stripos($text, $aramaTerimi);
$bitis = strlen($aramaTerimi);
$bulunanKelime = substr($text, $baslangic, $bitis);

$degistir = str_ireplace($aramaTerimi, "<strong>$bulunanKelime</strong>", $text);
Bu ise ekrana şöyle yazacak;

Not: $değistir kısmını şu şekilde de yapabilirsiniz.
PHP:
$degistir = str_replace($bulunanKelime, "<strong>$bulunanKelime</strong>", $text);

Çalıştığıyla ilgili canlı örnekler;
Ajax arama görüntü 2.jpg

ajax arama görüntü 3.jpg
 
Son düzenleme:
Geri
Üst