Realm 0 Denunciar post Postado Novembro 25, 2004 fala povo.... na minha jornada para encontrar uma função que corta palavras longas acabei fazendo minha própria função.... PHP [/tr][tr]function cortaPalavraLonga($string, $limite) { $string = trim($string); // corta espaços $palavras = explode(" ", $string); // coloca a string em uma array $count = count($palavras); // conta tamanho do array $i=0; // inicializa $i while($i > -1) { // break no fim deste while if(strlen($palavras[$i]) >= $limite) { // se a palavra for maior que o limite $novasPalavras[0] = substr($palavras[$i], 0, $limite); // pega a primeira parte da palavra $novasPalavras[1] = substr($palavras[$i], $limite); // pega a segunda parte parte for($k=0; $k < $i; $k++) { // pega as palavras antes da que foi modificada $novaStringArray[$k] = $palavras[$k]; } $k++; // incrementa $k $novaStringArray[$k-1] = $novasPalavras[0]; // atribui ao array a palavra nova, parte 1 $novaStringArray[$k] = $novasPalavras[1]; // atribui ao array a palavra nova, parte 2 for($j=($i+1); $j < $count; $j++) { // atribui ao array as palavras que vierem depois da palavra modificada $novaStringArray[$j+1] = $palavras[$j]; } $palavras = $novaStringArray; // atualiza o array de palavras } $count = count($palavras); // atualiza o contador $i++; // incrementa $i if($i == $count) break; // se o $i chegou ao mesmo valor de $count } $novaString = implode(" ", $novaStringArray); // junta as palavras no mesmo return $novaString; } // para usar: echo cortaPalavraLonga("aaaaaaaa bbb ccccccccccccccc ddd", 5); [/tr] MAAAAAAAS... não tah funcionando direito no PHP4 :angry: no php5 vai q é uma beleza... agora.... pergunto.... alguém tem algo para o php4???? :lol: fallow Compartilhar este post Link para o post Compartilhar em outros sites
rockbilly 0 Denunciar post Postado Novembro 25, 2004 A função não funcionou? Testei aqui no PHP 4.3.6 e foi.... estranho! Compartilhar este post Link para o post Compartilhar em outros sites
Realm 0 Denunciar post Postado Novembro 25, 2004 aí que tá.....o exemplo q eu passei funciona....agora experimenta passar 25 como limite.... ou seja.... um número maior...ele acusa erro nesse implode:$novaString = implode(" ", $novaStringArray); // junta as palavras no mesmo Compartilhar este post Link para o post Compartilhar em outros sites
rockbilly 0 Denunciar post Postado Novembro 25, 2004 é realmente aqui está dando o erro. Pq não tenta fazer um loop ao invés da função implode, e dai para cada vetor lido, acrescenta um espaço... bom é um ideia. Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Novembro 25, 2004 Tenta usar wordwrap ;) Compartilhar este post Link para o post Compartilhar em outros sites
Realm 0 Denunciar post Postado Novembro 25, 2004 infelizmente jah tentei prescot.... e não me resolveu nada....não sei pq.... não sei como... só sei q fikei sem entender pra que se usa essa função :angry: Compartilhar este post Link para o post Compartilhar em outros sites
Realm 0 Denunciar post Postado Novembro 25, 2004 então.... testei a wordwrap denovo.... se eu tenho uma string assim: aaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbb ccc ddddddddddddddd a wordwrap transforma pra isso: aaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbcccddddddddddddddd mas eu quero q transforme pra isso: aaaaaaaaaa aaaaaaaaaa aaaa bbbbbbbbbb bbbbbbbbbb bbb ccc dddddddddd ddddd sendo que colokei 10 como parametro, na minha função e na wordwrap tb http://forum.imasters.com.br/public/style_emoticons/default/blush.gif Compartilhar este post Link para o post Compartilhar em outros sites
rockbilly 0 Denunciar post Postado Novembro 25, 2004 ve se é isso q quer: PHP [/tr][tr]$s = 'aaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbb ccc ddddddddddddddd'; echo arruma_str($s,10); function arruma_str($st,$n) { $q = split(" ",$st); $w = sizeof($q); for ($r=0; $r<$w; $r++) { $sub .= arruma($q[$r],$n); } return $sub; } function arruma($str,$n) { $i=0; $x=0; while ($str[$i]) { if ($str[$i] !== " ") { $c.= $str[$i]; } $i++; } for ($j=0; $j<strlen($c); $j+=$n) { $cac .= substr($c,$j,$n)." "; } return $cac; } [/tr] Compartilhar este post Link para o post Compartilhar em outros sites
Realm 0 Denunciar post Postado Novembro 25, 2004 xD xD xDcara..... q droga..... tinha esquecido do 4º parametro do wordwrap.... :P :P :P :lol: :lol: :lol: VALEU PRESCOT Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Novembro 25, 2004 Na verdade é o 3º argumento, você define o que vai ter depois dos caracters definidos no 2º argumento, no caso é só colocar " " que dá certo. ;) ^_^ :D Compartilhar este post Link para o post Compartilhar em outros sites
Realm 0 Denunciar post Postado Novembro 26, 2004 só que tem um problema.....se você colocar assim: wordwrap($string, 25, "<br>")ele não corta a palavra.... que é o que eu preciso.....agora assim: wordwrap($string, 25, "<br>", 1)ele corta.... pode testar ae.... :lol: Compartilhar este post Link para o post Compartilhar em outros sites