Ir para conteúdo

POWERED BY:

Arquivado

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

Genuir

[Resolvido] Adicionar Quebra De Linha Quando Texto Chegar Na Bord

Recommended Posts

Olá galera, sou novo no fórum, se eu estiver postando no lugar errado me avisem tá?!

 

É o seguinte, estou criando um blog e nos artigos postados, os internautas podem postar comentarios, mas...

no textarea queria que se o texto chegar no final da linha (borda direita do textarea) colocasse um <br>!

 

Sei que no textarea ele já quebra a linha, mas eu queria que colocasse um <br> só no caso de alguém digitasse tipo:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... até ultrapassar a largura da textarea.

 

Esse texto quando resgatado do DB e jogado em uma div, ele sai fora da div.

 

ajudem aí!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, eu criei este tópico porque eu precisava de ajuda mas eu achei a solução.

 

Vou postar aki para aqueles que precisarem!!

 

Se trata de um script em php que analiza a quantidade de caracteres de todas as palavras e se acaso tiver mais de 70 caracteres, adiciona um quebra <br>.

 

$userdata['user_wordwrap'] = 70; // Total máximo de caracteres por palavra

 

Por favor moderadores, transfiram este tópico para a categoria PHP.


<?php
function word_wrap_pass($message)
{
	$userdata['user_wordwrap'] = 70; // Total máximo de caracteres por palavra
	$tempText = '';
	$finalText = '';
	$curCount = $tempCount = 0;
	$longestAmp = 9;
	$inTag = false;
	$ampText = '';
	$len = strlen($message);

	for ($num=0;$num<$len;$num++)
	{
		$curChar = $message[$num];

		if ($curChar == '<')
		{
			for ($snum=0;$snum<strlen($ampText);$snum++)
			{
				addWrap($ampText[$snum],$ampText[$snum+1],$userdata['user_wordwrap'],$finalText,$tempText,$curCount,$tempCount);
			}
			$ampText = '';
			$tempText .= '<';
			$inTag = true;
		}
		elseif ($inTag && $curChar == '>')
		{
			$tempText .= '>';
			$inTag = false;
		}
		elseif ($inTag)
		{
			$tempText .= $curChar;
		}
		elseif ($curChar == '&')
		{
			for ($snum=0;$snum<strlen($ampText);$snum++)
			{
				addWrap($ampText[$snum],$ampText[$snum+1],$userdata['user_wordwrap'],$finalText,$tempText,$curCount,$tempCount);
			}
			$ampText = '&';
		}
		elseif (strlen($ampText) < $longestAmp && $curChar == ';' && function_exists('html_entity_decode') &&
		       (strlen(html_entity_decode("$ampText;")) == 1 || preg_match('/^[0-9]+$/',$ampText)))
		{
			addWrap($ampText.';',$message[$num+1],$userdata['user_wordwrap'],$finalText,$tempText,$curCount,$tempCount);
			$ampText = '';
		}
		elseif (strlen($ampText) >= $longestAmp || $curChar == ';')
		{
			for ($snum=0;$snum<strlen($ampText);$snum++)
			{
				addWrap($ampText[$snum],$ampText[$snum+1],$userdata['user_wordwrap'],$finalText,$tempText,$curCount,$tempCount);
			}
			addWrap($curChar,$message[$num+1],$userdata['user_wordwrap'],$finalText,$tempText,$curCount,$tempCount);
			$ampText = '';
		}
		elseif (strlen($ampText) != 0 && strlen($ampText) < $longestAmp)
		{
			$ampText .= $curChar;
		}
		else
		{
			addWrap($curChar,$message[$num+1],$userdata['user_wordwrap'],$finalText,$tempText,$curCount,$tempCount);
		}
	}

	return $finalText . $tempText;
}
function addWrap($curChar,$nextChar,$maxChars,&$finalText,&$tempText,&$curCount,&$tempCount) {
	$wrapProhibitedChars = "([{!;,\\/:?}])";

	if ($curChar == ' ' || $curChar == "\n")
	{
		$finalText .= $tempText . $curChar;
		$tempText = '';
		$curCount = 0;
		$curChar = '';
	}
	elseif ($curCount >= $maxChars)
	{
		$finalText .= $tempText . ' ';
		$tempText = '';
		$curCount = 1;
	}
	else
	{
		$tempText .= $curChar;
		$curCount++;
	}

	if ($tempText != '' && $curChar != '')
	{
		$tempCount++;
	}

	elseif ( ($curCount == 1 && strstr($wrapProhibitedChars,$curChar) !== false) || 
	         ($curCount == 0 && $nextChar != '' && $nextChar != ' ' && $nextChar != "\n" && strstr($wrapProhibitedChars,$nextChar) !== false))
	{
		$tempCount++;
	}

	elseif (!($curCount == 0 && ($nextChar == ' ' || $nextChar == "\n")))
	{
		$tempCount = 0;
	}

	if ($tempCount >= $maxChars && $tempText == '')
	{
		$finalText .= ' ';
		$tempCount = 1;
		$curCount = 2;
	}

	if ($tempText == ''  && $curCount > 0)
	{
		$finalText .= $curChar;
	}
}

?>

Valeu galera!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bacana ter postado, qndo for assim, não deixe de postar também a fonte de onde pegou o script.

 

mas já que você 'pode' usar php.. tem uma função nativa que faz isso:

wordwrap()

 

http://www.php.net/manual/en/function.wordwrap.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

bacana ter postado, qndo for assim, não deixe de postar também a fonte de onde pegou o script.

 

mas já que você 'pode' usar php.. tem uma função nativa que faz isso:

wordwrap()

 

http://www.php.net/manual/en/function.wordwrap.php

 

Aki a fonte:

http://www.vivaolinux.com.br

 

mas já que você 'pode' usar php.. tem uma função nativa que faz isso:

wordwrap()

 

O problema é que a função wordwrap() quebra a cada x caracteres por frase e não por palavras.

 

Algumas vezes um usuario pode digitar uma palavra enooorme e acaba desconfigurando todo layout do site!

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum... mas pensa assim, numa situação real, qntos caracteres tem 'uma palavra enorme' ?

as 'reais da lingua portuguesa', não passam de 22~30 caracteres..

 

é que ainda assim, 'apenas para quebrar palavras grandes', esse script tá dando voltas demais.. dá pra resolver com um algoritmo bem mais simples

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.