<? //Criado por Fabricio Magri - fnmagri@uol.com.br //Editado por Bozo - bozo@gambiarra.com.br //Script anteriormente criado pelo Fabricio, Eu apenas mudei para //que fosse grifada a palavra em amarelo, antes apenas em em bold //acrescentei um novo parametro, numero de caracters a serem exibidos //e coloquei a condi��o de que se a palavra n�o estiver no texto //retorne parte do texto, anteriormente retornava um erro. //textQuery(TEXTO,PALAVRA BUSCADA,[numero de caracters*Opcional]) $texto = "Esse script retorna uma palavra especifica grifada em um texto, retorna apenas uma parte do texto"; function textQuery($text, $query, $chars='') { if($chars==''){ $charTrecho = 30; }else{ $charTrecho = $chars; } $charAnt="����������������������������& -!@#$%�&*()_+}=}{[]^~?/:;><,'�`\.\""; $charPos="AaEeIiOoUuCcAaAaAaEeIiOoOoUu "; $textNormal = strip_tags($text); $textFormat = $textNormal; $textFormat = strtolower(strtr($textFormat, $charAnt, $charPos)); $queryNormal = explode(" ", $query); $queryFormat = explode(" ", strtolower(strtr($query, $charAnt, $charPos))); for ($i = 0; $i < count($queryFormat); $i++) { if (strlen($queryFormat[$i]) == 0) { continue; } $ini = strpos($textFormat, $queryFormat[$i]); if ($ini !== false) { $len = strlen($queryFormat[$i]); $fim = $ini + $len - 1; $pos[$fim] = array("ini" => $ini, "queryFormat" => $queryFormat[$i], "len" => $len ); } } if($pos==""){ $trecho2 = substr($textNormal, 0, $charTrecho); $trecho2 = substr("$trecho2", 0, strrpos("$trecho2", " ") + 1) . "..."; }else{ krsort($pos); reset($pos); } $textLen = strlen($textFormat); for ($i = 0; $i < count($pos); $i++) { $key = key($pos); $trecho = substr($textNormal, 0, $key + $charTrecho); if (strlen($trecho) < $textLen) { $trecho = substr($trecho, 0, strrpos($trecho, " ") + 1) . "..."; } $tmp = substr($trecho, $pos[$key]["ini"], $pos[$key]["len"]); $trecho = substr_replace($trecho, "<span style='background-color: FFFF00'>" . $tmp . "</span>", $pos[$key]["ini"], $pos[$key]["len"]); $sair = false; while ($sair == false) { $trechoIni = $pos[$key]["ini"] - $charTrecho; if ($trechoIni < 0) { $trechoIni = 0; } if (next($pos) AND key($pos) > $trechoIni) { $key = key($pos); $tmp = substr($trecho, $pos[$key]["ini"], $pos[$key]["len"]); $trecho = substr_replace($trecho, "<span style='background-color: FFFF00'>" . $tmp . "</span>", $pos[$key]["ini"], $pos[$key]["len"]); $i++; } else { $tmp = substr($trecho, $trechoIni); if ($trechoIni > 0) { $tmp = "..." . strstr($tmp, " "); } $trechos[] = $tmp; $sair = true; } } } if($pos==""){ return $trecho2; }else{ return implode(" <br>", $trechos); } } echo textQuery($texto, "grifada"); ?>