L@nder 0 Denunciar post Postado Março 20, 2015 Pessoal estou a mais de um mês quebrando a cabeça para fazer com que o php crie um link em um texto com as palavras que constam no banco de dados. É o seguinte: Tenho uma tabela no meu banco de dados chamada "palavras" cuja estrutura é a seguinte. id nome 1 mesa 2 casa 3 meu E uma variável $texto $texto = "O meu casamento foi na minha casa"; O que eu quero é o seguinte. Preciso que o php liste no texto as palavras que constam no banco de dados e crie um link nesta palavra. No exemplo acima as palavras meu e casa. Ficando assim: O meu casamento foi na minha casa Observe que nas palavra meu e casa foi criado um link, pois estas palavras constam no banco de dados. Criei um array com as palavras do banco e outro com as palavras do texto. Utilizei a função str_replace porém ele marca a palavra casamento pois esta palavra contém a combinação das letras C A S A. Eu preciso que o php só marque palavras completas, e todas as que constarem no banco de dados. Já não sei mais o que fazer ou pesquisar... Se puderem me dar um passo a passo ficaria muito agradecido... Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Março 21, 2015 Melhor é usar regex <?php $string = 'O meu casamento foi na minha casa'; $words = array('mesa','casa','meu'); echo hl($string, $words); function hl($inp, $words) { $replace=array_flip(array_flip($words)); // remove duplicados $pattern=array(); foreach ($replace as $k=>$fword) { $pattern[]='/\b(' . $fword . ')(?!>)\b/i'; $replace[$k]='<a href="http://www.site.com.br/tags/$1" title="$1"><b>$1</b></a>'; } return preg_replace($pattern, $replace, $inp); } Compartilhar este post Link para o post Compartilhar em outros sites
L@nder 0 Denunciar post Postado Março 23, 2015 Melhor é usar regex <?php $string = 'O meu casamento foi na minha casa'; $words = array('mesa','casa','meu'); echo hl($string, $words); function hl($inp, $words) { $replace=array_flip(array_flip($words)); // remove duplicados $pattern=array(); foreach ($replace as $k=>$fword) { $pattern[]='/\b(' . $fword . ')(?!>)\b/i'; $replace[$k]='<a href="http://www.site.com.br/tags/$1" title="$1"><b>$1</b></a>'; } return preg_replace($pattern, $replace, $inp); } Exatamente isso que eu queria Williams. Me ajudou muito... Muito obrigado mesmo. Que papai do céu sempre te abençoe... Compartilhar este post Link para o post Compartilhar em outros sites