Boas noites...
Estou aqui com uma dúvida na manipulação de strings em PHP... aqui vai
A minha intenção principal é pegar numa string de, p.e., 16 caracteres:
"Ola eu sou o Baia" e reduzi-la a uma string com 8 seguida de "...", ficando:
"Ola eu s...", é claro que a minha intenção real é fazer isto com digamos... strings com mais de 64 caracteres... transformá-las em strings com apenas 64 caracteres mais "...". Por as reticências é cagada! Mas eu n consigo é criar uma nova string temporária para onde copie apenas os 64 caracteres da string original para dps lhe juntar "..."! Alguém pode ajudar?
Thanx alot...
_freelancer_
18-10-2004, 07:21
error_reporting(E_ALL ^ E_NOTICE); //Não ligues a isto :P é so para o meu php não mostrar erros por declaração de variáveis
$string ="Ola eu sou o Baia e ontem dei um grande frango";//criação da string
$string1 = substr($string,0,17)."...";//corta a string de 0 a 17 e adiciona-lhe reticências
echo $string;//mostra string
echo $string1;//mostra string1
Penso que deve ser isso que pretendes :)
inginheiiro
18-10-2004, 11:04
$s="eu sou o baia, possuo um aviario e faço descontos de quantidade";
$s=~s/(^.....)(.*)?(.....$)/$1 ... $3/gi;
function hraFormatarStringNumCaracteres($string, $caracteres) {
$comp = strlen($string);
$sair = 0;
$string2 = "";
if ( $comp < $caracteres ) {
$string2 = $string;
} else {
for ( $i = $caracteres ; $i > 0 ; $i-- ) {
$char = substr($string, $i, 1);
if ( ($char == " ") && ($sair == 0) ) {
$string2 = substr($string, 0, $i); // Passa o Texto para a variável.
$sair = 1;
} // Fim do IF.
} // Fim fo LOOP.
$string2 .= " ...";
} // Fim do IF.
return $string2;
} // Fim da Função
// No fim chamas a função, dando-lhe o nº de caracteres que queres....
$string = "Acho que deve ser isto que tu queres, e daí até pode não ser";
$nova_string = hraFormatarStringNumCaracteres($string, 64);
Ricardo Vidal
18-03-2005, 20:34
function hraFormatarStringNumCaracteres($string, $caracteres) {
$comp = strlen($string);
$sair = 0;
$string2 = "";
if ( $comp < $caracteres ) {
$string2 = $string;
} else {
for ( $i = $caracteres ; $i > 0 ; $i-- ) {
$char = substr($string, $i, 1);
if ( ($char == " ") && ($sair == 0) ) {
$string2 = substr($string, 0, $i); // Passa o Texto para a variável.
$sair = 1;
} // Fim do IF.
} // Fim fo LOOP.
$string2 .= " ...";
} // Fim do IF.
return $string2;
} // Fim da Função
// No fim chamas a função, dando-lhe o nº de caracteres que queres....
$string = "Acho que deve ser isto que tu queres, e daí até pode não ser";
$nova_string = hraFormatarStringNumCaracteres($string, 64);
Desculpa mas esta função não faz exactamente a mesma coisa que o substr() ?
Simplesmente contornaste a introdução do elemento de contagem inicial...
substr() deu perfeitamente para fazer o que eu queria... :)
Pelo que percebi, ele queria uma função que cortasse uma string por um "indeterminado" numero de caracteres, ou seja, que daria um numero máximo de caracteres e a função retornava uma string com esse comprimento mais umas reticências.
Esta função apenas não corta palavras a meio, que já não dá para fazer apenas com substr();
Se calhar era apenas retirar o comprimento da string que ele queria. Só lhe dei um add-on.