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

Whistle

Ruhsuz :/
Kurucu
Geliştirici
Yardımsever Üye
Mesaj
11.950
Çözümler
567
Beğeni
13.748
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:
Genişlet Daralt Kopyala
$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.webp


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:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
$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:
Genişlet Daralt Kopyala
$degistir = str_replace($bulunanKelime, "<strong>$bulunanKelime</strong>", $text);

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

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