Valeu pela ajuda agora eu consegui fazendo algumas alterações está funcionando normal parabéns pelo script muito bom.
Palavras buscadas
$palavras = explode(" ", $palavra);
foreach($palavras as $valor)
{
$destacar[] = "$valor";
$i++;
}
Mateli.php
/***************************************************
*@ arquivo: mateli.php (versão 1.0)
*@ descrição: Função para destaque de expressões em textos.
*@ autor: Klaus Paiva <klauspaiva@gmail.com>
*@ modificado em: 08/01/2005 @ 07:26 (GMT -03:00)
*@ última versão: http://mateli.codigolivre.org.br/
*@ documentação: http://mateli.codigolivre.org.br/docs/
***************************************************/
// Criação da função de destaque
function mateli ($destacar, $texto) {
// Cria uma nova variável com o texto destacado
$td = "";
// Cria uma variável booleana para controle de tags com conteúdo não destacado
$bloqueio = false;
// Cria a expressão regular de destaques
$er = "/((<.*?>)([^<]*))/sim";
// Loop que percorre a matriz de expressões...
for ($i = 0; $i < count ($destacar); $i++) {
// ... criando as expressões regulares para as palavras
$destacar[$i] = "/(\b$destacar[$i]\b)/sim";
}
// "Casa" o texto recebido com a primeira ER
preg_match_all ($er, $texto, $c);
// Loop que percorre todos os casamentos...
for ($k = 0; $k < count ($c[2]); $k++) {
// ... armazenando as tags casadas...
$td .= $c[2][$k];
// ... verifica se o bloqueio está ativo... (caso contrário, executa o destaque)
if ($bloqueio == true) {
// ... apenas armazenando o texto, sem destaque...
$td .= $c[3][$k];
// ... passando para a próxima iteração
continue;
}
// ... criando uma variável para guardar os textos alterados no próximo loop
$loop = $c[3][$k];
// ... caso contrário, um loop é criado para destacar...
for ($i = 0; $i < count ($destacar); $i++) {
// ... de acordo com as expressões recebidas
$loop = preg_replace ($destacar[$i], "<b>\\1</b>", $loop);
}
// ... e por fim, armazena o texto alterado pelo laço
$td .= $loop;
}
// Retorna o texto alterado
return $td;
}
Código na página
require("mateli.php");
echo mateli($destacar, $texto);
----
CSFInfo
Postado em 12 Jul 2005, 22:18
Estou fazendo algumas alterações no script mateli.php para minhas necessidades estou com uma dúvida na expressão regular
$er = "/((.*?)([^>]*))/sim";
Dei uma lida no site
http://guia-er.sourceforge.net mas não encontrei pois estou querendo que ele não faça distinção de acentos como no código abaixo:
Ele altera a palavra com ou sem acento.
$texto_destacado= preg_replace("/($destaque?)/i","<b>\\0</b>",$texto);
Não estou conseguindo no script acima.
----
Não poste seguidamente, caso precise alterar/adicionar alguma informação ao seu último post clique no botão [Editar]
Edição feita por: fly2k, 13/07/2005, 08:56.