Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Realm

Cortando palavras muito longas

Recommended Posts

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

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

é 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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.