• 16-07-2015, 01:22:07
    #1
    Array içinde ki kelimelerden herhangi biri $baslik içerisin de var ise kelimeyi yazsın
    //Elimizde şöyle şuradaki gibi bir array olsun
    $meyveler = array("Elma", "Armut", "Muz", "Kiraz");
    
    $baslik= "elma ile tatlı yapma";//Buda durmadan değişen dengesiz bir cümle olsun
    
    //Buda bir elma olsun
    elma
    Yardımlarınızı seviyorum.
  • 16-07-2015, 02:15:30
    #2
    Üyeliği durduruldu
    function varmi($veri){
    	$meyveler = array("Elma", "Armut", "Muz", "Kiraz");
    	$adet = count(array_intersect(explode(' ',$veri),$meyveler));
    	if($adet > 0 ) return "Var";
    	return "yok";
    }
    $baslik = "Elma ile tatlı yapma";
    echo varmi($baslik); // Çıktı -> Var
    Mantığı şöyle
    Cümleyi parçalayıp array yapıyosun sonra meyveler dizisi ile karşılaştırıyorsun.
    array_intersect ortak elemanları döndürüyo. count ile sayısını aldık eğer 0 dan büyükse vardır yoksa yoktur
  • 16-07-2015, 02:16:55
    #3
    Temelde böyle bir şey işinizi görmeli ama ek almış halleri tekrarlananlar vs. gibi detayları hesaba katarsanız daha spesifik bişeyler hazırlanmalı.

    $meyveler = array("Elma", "Armut", "Muz", "Kiraz");
     
    $baslik= "elma ve armut ile tatlı yapma";
    
    $pattern = implode("|", $meyveler);
    
    preg_match_all("#$pattern#i", $baslik, $output);
    
    var_dump($output);
    /*
    array (size=1)
      0 => 
        array (size=2)
          0 => string 'elma' (length=4)
          1 => string 'armut' (length=5)
    */
  • 16-07-2015, 02:17:24
    #4
    kelimeyi parçalayıp dizi yapmak yerine diziyi foreach ile döndürüp tek tek değerleri ana kelime ile strstr() ile karşılaştıra bilrisin böylelikle gereksiz dizi oluşturmak zorunda kalmazsın. veya regex yazarsın
  • 16-07-2015, 02:19:10
    #5
    Üyeliği durduruldu
    phpkoder adlı üyeden alıntı: mesajı görüntüle
    kelimeyi parçalayıp dizi yapmak yerine diziyi foreach ile döndürüp tek tek değerleri ana kelime ile strstr() ile karşılaştıra bilrisin böylelikle gereksiz dizi oluşturmak zorunda kalmazsın. veya regex yazarsın
    Tabiki de öyle yapılabilir. Ama bir sürü kelimenin olduğunu düşün ??

    Böylesi daha sağlıklı.
  • 16-07-2015, 03:08:19
    #6
    İlgileriniz hoşuma gitti şimdi hepinizin mantığını tek tek uygulayacağım sizden önce kendim şöyle bir metod uyguladım buda işimi gördü ama her kelime için ayrı ayrı yazdığımdan kod gereksizliği oluştu

    $Meyveler= array(
    		"Erik" =>'Erik',
    		"Elma" =>'Elma'
    	);
    
            $bul= "Erik tatlısı";
    	$bul= explode(" ",$bul);
    		if (in_array($Meyveler["Erik"], $bul))
    		{
    		echo $Meyveler["Erik"];
    		}


    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 03:08:19 -->-> Daha önceki mesaj 03:02:43 --

    NodeJs adlı üyeden alıntı: mesajı görüntüle
    function varmi($veri){
    	$meyveler = array("Elma", "Armut", "Muz", "Kiraz");
    	$adet = count(array_intersect(explode(' ',$veri),$meyveler));
    	if($adet > 0 ) return "Var";
    	return "yok";
    }
    $baslik = "Elma ile tatlı yapma";
    echo varmi($baslik); // Çıktı -> Var
    Mantığı şöyle
    Cümleyi parçalayıp array yapıyosun sonra meyveler dizisi ile karşılaştırıyorsun.
    array_intersect ortak elemanları döndürüyo. count ile sayısını aldık eğer 0 dan büyükse vardır yoksa yoktur
    Peki eşleşen kelimeyi yazmasını nasıl sağlarız bana eşleşen kelime lazım
  • 16-07-2015, 03:20:23
    #7
    Üyeliği durduruldu
    MoreMor adlı üyeden alıntı: mesajı görüntüle
    İlgileriniz hoşuma gitti şimdi hepinizin mantığını tek tek uygulayacağım sizden önce kendim şöyle bir metod uyguladım buda işimi gördü ama her kelime için ayrı ayrı yazdığımdan kod gereksizliği oluştu

    $Meyveler= array(
    		"Erik" =>'Erik',
    		"Elma" =>'Elma'
    	);
    
            $bul= "Erik tatlısı";
    	$bul= explode(" ",$bul);
    		if (in_array($Meyveler["Erik"], $bul))
    		{
    		echo $Meyveler["Erik"];
    		}


    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 03:08:19 -->-> Daha önceki mesaj 03:02:43 --



    Peki eşleşen kelimeyi yazmasını nasıl sağlarız bana eşleşen kelime lazım
    function varmi($veri){
       $meyveler = array("Elma", "Armut", "Muz", "Kiraz");
       $eslesen = array_intersect(explode(' ',$veri),$meyveler);
       $adet = count($eslesen);
       return $adet > 0 ? implode(', ',$eslesen) : 'Yok.';
    }
    $baslik = "Elma ile tatlı yapma Kiraz";
    echo varmi($baslik); // Çıktı -> Elma, Kiraz
  • 16-07-2015, 03:45:40
    #8
    Siz tam olarka ne amaç için kullanacağınızı söylerseniz, daha net cevap yazılabilir. Verdiğim örnekte eşleşen tüm kelimeleri size geri döndürür.

    <?php
    
    function bul($aranacak, $aranan){
    	
    	$pattern = implode("|", $aranan);
    
    	preg_match_all("#$pattern#i", $aranacak, $output);
    	
    	return $output[0];
    }
    
    $meyveler = array("Elma", "Armut", "Muz", "Kiraz");
     
    $baslik= "elma ve armut ile tatlı yapma";
    
    
    foreach(bul($baslik, $meyveler) as $meyve){
    	
    	echo $meyve.'<br>';
    }
    
    /* çıktı 
    elma
    armut
    */
    ?>
  • 16-07-2015, 04:52:39
    #9
    Met adlı üyeden alıntı: mesajı görüntüle
    Siz tam olarka ne amaç için kullanacağınızı söylerseniz, daha net cevap yazılabilir. Verdiğim örnekte eşleşen tüm kelimeleri size geri döndürür.

    <?php
    
    function bul($aranacak, $aranan){
    	
    	$pattern = implode("|", $aranan);
    
    	preg_match_all("#$pattern#i", $aranacak, $output);
    	
    	return $output[0];
    }
    
    $meyveler = array("Elma", "Armut", "Muz", "Kiraz");
     
    $baslik= "elma ve armut ile tatlı yapma";
    
    
    foreach(bul($baslik, $meyveler) as $meyve){
    	
    	echo $meyve.'<br>';
    }
    
    /* çıktı 
    elma
    armut
    */
    ?>
    Verdiğin kod ile çok temiz bir şekilde istediğime ulaştım çok teşekkür ederim. Ayrıca bu konuya tüm cevap veren arkadaşlara da ayrı ayrı teşekkür ederim farklı yöntemler öğrenmiş oldum.