BRG 2 Denunciar post Postado Julho 10, 2009 Bom dia pessoal, gostaria de uma ajuda duas... Eu tenho a seguinte string: $busca = strip_tags("<p>1 NO princípio criou Deus os céus e a terra. <br />2 E a terra era sem forma e vazia; e havia trevas sobre a face do abismo; e o Espírito se movia sobre a face das águas. <br />3 E disse Deus: Haja luz; e houve luz. <br />4 E viu Deus que era boa a luz; e fez Deus separação entre a luz e as trevas. <br />5 E Deus chamou à luz Dia; e às trevas chamou Noite. E foi a tarde e a manhã, o dia primeiro. <br />6 E disse Deus: Haja uma expansão no meio das águas, e haja separação entre águas e águas.<br />"); tenho uma palavra chave $palavra = "Deus"; Ai eu tenho essa funcão para quebrar os numeros 1, 2,3 ,4 5, 6,,, print_r( $resultado = preg_split("/[0-9] /", $busca)); E essa para destacar a palavra chave $descricao = preg_replace("/($palavra?)/i","<b>\\0</b>",$busca)); e juntando as duas ficaria... print_r( $resultado = preg_split("/[0-9] /", $descricao)); Bom.. o que eu queria era exibir meu resultado assim ....criou[b] Deus[/b] os céus e a terra... Uma quantidade N de caracter antes e uma quantidade N de palavras depois da palavra chave. Edit: Só uma observação Alem disso.. teria que comparar qual teria a palavra Deus. No caso o versiculo 2 não retornaria na busca. Alguem poderia me ajudar?? , Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Julho 10, 2009 recomendo fazer algo mais simples por exemplo, veja que o texto possui um "pattern" cada versículo é separado pela tag html <br> faça um explode() do <br> cada indice do vetor receberá cada versículo com isso, basta trabalhar com funções de string sem precisar complicar com regex.. Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Julho 10, 2009 recomendo fazer algo mais simples por exemplo, veja que o texto possui um "pattern" cada versículo é separado pela tag html <br> faça um explode() do <br> cada indice do vetor receberá cada versículo com isso, basta trabalhar com funções de string sem precisar complicar com regex.. Mais então.. estou tirando as tags htmls com strip_tags, pois nem sei se sempra vai haver um <br> Já está separando certinho... e tudo mais.. a unica coisa que preciso é Uma quantidade N de caracter antes e uma quantidade N de palavras depois da palavra chave. , Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Wapbrasil 1 Denunciar post Postado Julho 10, 2009 function destacar($palavra, $texto){ $limite = 10; //AQUI você COLOCA O NUMERO DE CARACTERS QUE VAI APARECER ANTES E DEPOIS. $explode = explode($palavra, $texto); $parte1 = $explode[0]; $parte2 = $explode[1]; $parte1 = strrev($parte1); $parte1 = substr($parte1,0,$limite); $parte1 = strrev($parte1); $parte2 = substr($parte2,0,$limite); $final = '...' . $parte1 . $palavra . $parte2 . '...'; return $final; } $palavra = "Deus"; $string = "No principio criou Deus os ceus e a terra. "; echo destacar($palavra, $string); Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Julho 10, 2009 Opa.. rafael.. era isso mesmo.. vou testar aqui e edito este topico se estiver OK.. obrigado.. Edit: Rafael.. é bem isso mesmo... so teria como dar um ajuste?? tem como não cortar uma palavra?? é que as vezes fica ...sericordia. Valeu , Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Wapbrasil 1 Denunciar post Postado Julho 11, 2009 você tinha falado separar por caracteres, mais para separar por palavra fica assim: function destacar($palavra, $texto){ $limite = 4; // O numero limite de PALAVRAS $limite++; $explode = explode($palavra, $texto); $parte1 = $explode[0]; $parte1 = strrev($parte1); $parte2 = $explode[1]; $palavras1 = explode(" ",$parte1); $palavras2 = explode(" ",$parte2); $ant = ""; for($i=0; $i<$limite;$i++){ $ant .= $palavras1[$i] . " "; } unset($i); // Por via das duvida :D $dep = ""; for($i=0; $i<$limite;$i++){ $dep .= $palavras2[$i] . " "; } $ant = strrev($ant); $final = '...' . $ant . $palavra . $dep . '...'; return chop(trim($final)); } $palavra = "<b>Deus</b>"; // Coloquei <b> pq a palavra vai ganhar estas tags quando passar pela ER do seu codigo que postou $string = "No principio criou <b>Deus</b> os ceus e a terra. "; echo destacar($palavra, $string); Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Julho 12, 2009 Resolvido... Muito obrigado Rafael. , Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Julho 13, 2009 você tinha falado separar por caracteres, mais para separar por palavra fica assim: function destacar($palavra, $texto){ $limite = 4; // O numero limite de PALAVRAS $limite++; $explode = explode($palavra, $texto); $parte1 = $explode[0]; $parte1 = strrev($parte1); $parte2 = $explode[1]; $palavras1 = explode(" ",$parte1); $palavras2 = explode(" ",$parte2); $ant = ""; for($i=0; $i<$limite;$i++){ $ant .= $palavras1[$i] . " "; } unset($i); // Por via das duvida :D $dep = ""; for($i=0; $i<$limite;$i++){ $dep .= $palavras2[$i] . " "; } $ant = strrev($ant); $final = '...' . $ant . $palavra . $dep . '...'; return chop(trim($final)); } $palavra = "<b>Deus</b>"; // Coloquei <b> pq a palavra vai ganhar estas tags quando passar pela ER do seu codigo que postou $string = "No principio criou <b>Deus</b> os ceus e a terra. "; echo destacar($palavra, $string); Rafael, olhando aqui agora, o script cai no problema da ER deste tópico: http://forum.imasters.com.br/index.php?showtopic=353239 Veja a imagem: http://i31.tinypic.com/30tgzzp.gif Ele acha a palavra, porem é a palavra com derivações, e não a palavra monossilaba (podendo ter caracteres especiais..) Tem alguma adptação para isso??? , Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Julho 29, 2009 Bom dia.. Só continuando.. Ex.. Se eu digitar FÉ ao invés de fé... Ele acha o texto, não grifa e exibi .FÉ no final... (não está fazendo diferença de minusculo e maiusculo) Veja exemplo: http://i25.tinypic.com/wlaixg.jpg Compartilhar este post Link para o post Compartilhar em outros sites
edsonxo 0 Denunciar post Postado Agosto 20, 2009 você tinha falado separar por caracteres, mais para separar por palavra fica assim: function destacar($palavra, $texto){ $limite = 4; // O numero limite de PALAVRAS $limite++; $explode = explode($palavra, $texto); $parte1 = $explode[0]; $parte1 = strrev($parte1); $parte2 = $explode[1]; $palavras1 = explode(" ",$parte1); $palavras2 = explode(" ",$parte2); $ant = ""; for($i=0; $i<$limite;$i++){ $ant .= $palavras1[$i] . " "; } unset($i); // Por via das duvida :D $dep = ""; for($i=0; $i<$limite;$i++){ $dep .= $palavras2[$i] . " "; } $ant = strrev($ant); $final = '...' . $ant . $palavra . $dep . '...'; return chop(trim($final)); } $palavra = "<b>Deus</b>"; // Coloquei <b> pq a palavra vai ganhar estas tags quando passar pela ER do seu codigo que postou $string = "No principio criou <b>Deus</b> os ceus e a terra. "; echo destacar($palavra, $string); Rafael, olhando aqui agora, o script cai no problema da ER deste tópico: http://forum.imasters.com.br/index.php?showtopic=353239 Veja a imagem: http://i31.tinypic.com/30tgzzp.gif Ele acha a palavra, porem é a palavra com derivações, e não a palavra monossilaba (podendo ter caracteres especiais..) Tem alguma adptação para isso??? , Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Wapbrasil 1 Denunciar post Postado Agosto 20, 2009 function destacar($frase, $word){ if(!strstr($frase, $word)) return $frase; $limite = 5; // Limite de palavras while(strstr($frase, " ")) $frase = str_replace(" ", " ", $frase); $pos1 = strpos($frase, $word); $pos2 = $pos1 + strlen($word); $str1 = substr($frase, 0, $pos1); $str2 = substr($frase, $pos2, strlen($frase)); // Fazer a separacao if(strstr($str1, " ")){ $str1exp = array_reverse(explode(" ", $str1)); $temp_str1 = ""; for($i=count($str1exp) - 4; $i >= (count($str1exp) - $limite - 3); $i--){ $temp_str1 .= $str1exp[$i] . " "; } } if(strstr($str2, " ")){ $expstr = substr($frase, strpos($frase, $word), strlen($frase)); $expstr = explode(" ", $expstr); unset($i); $temp_str2 = ""; for($i=1;$i<$limite+1;$i++){ $temp_str2 .= $expstr[$i] . " "; } } $ret = $temp_str1 . $word . ' ' . $temp_str2; while(strstr($ret, " ")) $ret = str_replace(" ", " ", $ret); return $ret; } $frase = "aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmm nnn ooo ppp"; $word = "aaaa"; echo destacar($frase, $word); Compartilhar este post Link para o post Compartilhar em outros sites