съвпадение на дума от стринг с масив

embaka

Registered
здравейте,

мъча се да направя сравнение на думи от текст с таква от таблица

идеята е ако съществува думата/ите от стринга с тези от масива да се вземе url-то

таблицата е words с полета id,name,url

ама се чудя как да сравня всяка дума от стринга с всяка от масива

трябва да заменя думите с url

Код:
function words ($string){
	
	
	$string = str_replace(",", "", $string );
	$string = str_replace(".", "", $string );
	$string = str_replace("-", " ", $string );
	$string = str_replace('"', '', $string );
	//echo $string;
	
	$matchWords = explode (" ", $string);
	//$matchWords = $matchWords[0];
	//print_r($matchWords);
	
	foreach ( $matchWords as $key=>$value ) 
					  {
						  if ( $value == '' || strlen($value) <= 3 ) 
						  {
							  unset($matchWords[$key]);
						  }
					  }    

				return $matchWords ;	
}

	$text = "Второ 13-годишно момиче е родило в АГ \"болница\", съобщават от болничното заведение. Младата майка е била приета вчера. Тя е от ромската махала в кв. Владиславово. Момичето е посещавало редовно женските консултации. Другата 13-годишна родилка е приета с проблемна бременност преди дни. Тя е родила със секцио. Бебето тежи 1.700 кг. и е настанено в неонатологично отделение. Състоянието на майката и бебето е стабилно.";
	$text = stripslashes($text);
	$words = words($text);
 
Първо с foreach() ги обработваш, а ги проверяваш с in_array() :idea:
 
:shock:

ако намери думата хотели трябва да я замени с <a href="http://adres">хотели</a>

това нещо ми заменя само една дума, а в текста има доста

Код:
function words($str, $new_words, $replace_str){
    if (!is_array($new_words)){ $new_words = explode(',', $new_words); }
    for ($x=0; $x < count($new_words); $x++){
        $fix = isset($new_words[$x]) ? $new_words[$x] : '';
        $_replace_str = $replace_str;
        if (strlen($replace_str)==1){ 
            $_replace_str = str_pad($_replace_str, strlen($fix), $replace_str);
        }
        $str = preg_replace('/'.$fix.'/i', $_replace_str, $str);
    }
    return $str;
}

	$text = "Второ 13-годишно момиче е родило в АГ \"болница\", съобщават от хотели болничното море заведение. Младата майка е била приета вчера. Тя е от ромската махала в кв. Владиславово. Момичето е посещавало редовно женските консултации. Другата 13-годишна родилка е приета с проблемна бременност преди дни. Тя е родила със секцио. Бебето тежи 1.700 кг. и е настанено в неонатологично отделение. Състоянието на майката и бебето е стабилно.";
	$text = stripslashes($text);
	$new_text = words($text,$row['name'], '<a href="'.$row['url'].'">'.$row['name'].'</a>');
	echo $new_text;
 
в крайна сметка това трябваше да се получи


Код:
  public function words($string)
	{
	  $blq = $this->_dbh->GetAll("select * from words"); 
	  foreach ($blq as $golqm_hui){
		  $url = "<a href=\"$golqm_hui[url]\" class=\"words\">".$golqm_hui['name']."</a>";
		  if (mb_strstr($string, $golqm_hui['name'], false, "UTF-8") !== false) {
			  
			  $string = str_replace($golqm_hui['name'], $url, $string);
		  }
	  }
	  return $string;
	}
 

Back
Горе