lostyazilim
tr.link

bul ve <b> içine al

8 Mesajlar 865 Okunma
lstbozum
tr.link

BigBang BigBang Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 03.06.2018
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum İzmir
  • Ad Soyad B** Y**
  • Mesajlar 169
  • Beğeniler 20 / 39
  • Ticaret 0, (%0)
String içerisinde aranılan değer varsa onu tagı içerisine almak istiyorum, arama motorlarında olduğu gibi. örneğin
aranılan değer: deneme qwe
sonuc: 123 qwe

Bunu yapan fonksiyonu kendim yazdım ama bana çok uzun geldi. Bunu daha kısa bir şekilde nasıl yaparız? Regex ile mümkün mü?

Benim yazdığım fonksiyon:

function doBold($org,$sc){
$org = preg_replace('/[^A-Za-z_ğüşıöçĞÜŞİÖÇ0-9]/u', '', $org);
$sc = preg_replace('/[^A-Za-z_ğüşıöçĞÜŞİÖÇ0-9]/u', '', $sc);
if(mb_strtolower($org) == mb_strtolower($sc)) return "".$org."";
$orgFirst = mb_substr($org,0,1,"UTF-8");
$scFirst = mb_substr($sc,0,1,"UTF-8");
if($orgFirst != $scFirst){
$l = mb_convert_case($scFirst, MB_CASE_TITLE, "UTF-8");
if( mb_convert_case($scFirst, MB_CASE_TITLE, "UTF-8") == $orgFirst ){
$sc = $l.mb_substr($sc,1,strlen($sc),"UTF-8");
}
}
$p = preg_split('/'.$sc.'/u', $org);
if( isset($p[0]) && trim($p[0]) != "" && isset($p[1]) && trim($p[1]) == "" ){
return $p[0]."".$sc."";
}
if( isset($p[0]) && trim($p[0]) == "" && isset($p[1]) && trim($p[1]) != "" ){
return "".$sc."".$p[1];
}
if( isset($p[0]) && trim($p[0]) != "" && isset($p[1]) && trim($p[1]) != "" ){
return $p[0]."".$sc."".$p[1];
}
return false;
}
 

 

wmaraci
reklam

ikodev ikodev Developer Kullanıcı
  • Üyelik 08.05.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Developer
  • Konum Samsun
  • Ad Soyad İ** Ş**
  • Mesajlar 1020
  • Beğeniler 321 / 320
  • Ticaret 19, (%100)
str_replace kullanmanız yeterli olacaktır...
$metin = "123 qwe";
$yenimetin = str_replace("qwe", "qwe", $metin);


Edit; Diğer belirttiklerinizi yeni gördüm kusura bakmayın ama dediğim mantıkla fonksiyon oluşturursanız çok zorlancağınızı düşünmüyorum örneğin ;

$metin = "123 qwe";
$metin = toBold("qwe", $metin);


function toBold($kelime, $veri)
{
$yenimetin = str_replace("{$kelime}", "{$kelime}", $veri);
return $yenimetin;
}


Buda ek : https://www.ilkersahin.com/blog/php-str_replace-kullanimi-4652021
ASametYildirim

kişi bu mesajı beğendi.

BigBang BigBang Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 03.06.2018
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum İzmir
  • Ad Soyad B** Y**
  • Mesajlar 169
  • Beğeniler 20 / 39
  • Ticaret 0, (%0)

edcsmile adlı üyeden alıntı

str_replace kullanmanız yeterli olacaktır...
$metin = "123 qwe";
$yenimetin = str_replace("qwe", "qwe", $metin);


Edit; Diğer belirttiklerinizi yeni gördüm kusura bakmayın ama dediğim mantıkla fonksiyon oluşturursanız çok zorlancağınızı düşünmüyorum örneğin ;

$metin = "123 qwe";
$metin = toBold("qwe", $metin);


function toBold($kelime, $veri)
{
$yenimetin = str_replace("{$kelime}", "{$kelime}", $veri);
return $yenimetin;
}


Buda ek : https://www.ilkersahin.com/blog/php-str_replace-kullanimi-4652021


bunu bende düşündüm ama şöyle bir sorun var. mesela
aranana değer: aracı
sonuc: WM Aracı
çıktı -> WM Aracı

Yani büyük harf küçük harf sıkıntısı var
 

 

ikodev ikodev Developer Kullanıcı
  • Üyelik 08.05.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Developer
  • Konum Samsun
  • Ad Soyad İ** Ş**
  • Mesajlar 1020
  • Beğeniler 321 / 320
  • Ticaret 19, (%100)
$metin = "Wm Aracı";
$metin = toBold("aracı", $metin);

echo $metin;

function toBold($kelime, $veri)
{
$orjMetin = $veri;
$benzeri = preg_quote($kelime);
$yenimetin = preg_replace("/($benzeri)/i", '$1', $orjMetin);
return $yenimetin;
}
?>


Test ettim sorunsuz çalışıyor dostum kolay gelsin (büyük-küçük sıkıntısı yok)
 

 

wmaraci
wmaraci

BigBang BigBang Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 03.06.2018
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum İzmir
  • Ad Soyad B** Y**
  • Mesajlar 169
  • Beğeniler 20 / 39
  • Ticaret 0, (%0)

edcsmile adlı üyeden alıntı

$metin = "Wm Aracı";
$metin = toBold("aracı", $metin);

echo $metin;

function toBold($kelime, $veri)
{
$orjMetin = $veri;
$benzeri = preg_quote($kelime);
$yenimetin = preg_replace("/($benzeri)/i", '$1', $orjMetin);
return $yenimetin;
}
?>


Test ettim sorunsuz çalışıyor dostum kolay gelsin (büyük-küçük sıkıntısı yok)


Yok hocam çalışmıyor. kodlar

$metin = "Çalışmada";
$metin = toBold("çalış", $metin);
echo $metin;
function toBold($kelime, $veri)
{
$orjMetin = $veri;
$pattern = preg_quote($kelime);
$yenimetin = preg_replace("/($pattern)/i", '$1', $orjMetin);
return $yenimetin;
}
?>
 

 

ikodev ikodev Developer Kullanıcı
  • Üyelik 08.05.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Developer
  • Konum Samsun
  • Ad Soyad İ** Ş**
  • Mesajlar 1020
  • Beğeniler 321 / 320
  • Ticaret 19, (%100)
Wm Aracı örneği verdiğinizde kontrol ettiyseniz bir problem yok.. Başta türkçe karakter olunca muhtemelen kelimeye ulaşamadığı için patlıyor. Türkçe karakter sorunu var yani sanırsam onun içinde araştırın bir bakalım
 

 

BigBang BigBang Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 03.06.2018
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum İzmir
  • Ad Soyad B** Y**
  • Mesajlar 169
  • Beğeniler 20 / 39
  • Ticaret 0, (%0)

edcsmile adlı üyeden alıntı

Wm Aracı örneği verdiğinizde kontrol ettiyseniz bir problem yok.. Başta türkçe karakter olunca muhtemelen kelimeye ulaşamadığı için patlıyor. Türkçe karakter sorunu var yani sanırsam onun içinde araştırın bir bakalım


("/($pattern)/i
i'nin yanına u ekleyince sorun çözüldü. Teşekkür ederim (:
ikodev

kişi bu mesajı beğendi.

ikodev ikodev Developer Kullanıcı
  • Üyelik 08.05.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Developer
  • Konum Samsun
  • Ad Soyad İ** Ş**
  • Mesajlar 1020
  • Beğeniler 321 / 320
  • Ticaret 19, (%100)
BigBang Süpersin :) Kolay gelsin
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)