Ir para conteúdo

POWERED BY:

Arquivado

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

danielswater

trim nao remove espaço em branco

Recommended Posts

Fala pessoal beleza?

 

E o seguinte, estou pegando uma lista de emails em txt, so que eu nao consigo remover os espaços em branco nem a pau.

 

Os emails no txt estão assim:

 

email1@gmail.com;    email2@gmail.com
email3@hotmail.com;

 

Deixei esse espaço em branco justamente porque nessa lista de emails que eu tenho, muitos estão assim

Segue o cod php

 

<?php

$txt = file_get_contents("mail.txt");
$arr = explode(";", $txt);

$e = "'";
$d = "'";
$v = ",";

for($i = 0; $i < count($arr); $i++){    
   echo trim($e.$arr[$i].$d.$v);
}

?>

 

O problema e que nesse echo, ele me da esse resultado:

 

[/code]

'email1@gmail.com',' email2@gmail.com email3@hotmail.com','',

[/code]

 

Vejam que entre a 1 aspas simples do email2 contem um espaço e também há espaço entre o email2 e o 3

 

 

Por falvor galera sera que tem alguma santa alma que pode me ajudar com isso?

 

Desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja tentou rtrim ?

 

caso não der , tenta um str_replace

 

$email  = 'andrey';
$email .= ' andrey';
echo str_replace(" ","",$email);

minha saida foi

andreyandrey

 

Entao o rtrim nao deu nao, já havia tentado também

O str_replace também não deu, continua o espaço separado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com base no que você passou fiz essa pog kkkkkk

testa ae

 

<?php
 $texto = file_get_contents("email.txt");
 $texto = preg_replace('/\s+/'," ",$texto);
 $texto = str_replace(";"," ",$texto);
 $texto = str_replace("  "," ",$texto);
 $texto = str_replace(" ",";",$texto);
 $texto = str_replace(";","','",$texto);
 $texto = explode("','",$texto);

 echo "<pre>";
   print_r($texto);
 echo "</pre>";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro, é preciso saber pra que serve cada função... vocês saem por aí usando TRIM, RTRIM, sem saber pra que serve cada uma delas... vamos lá:

 

http://pt.php.net/ltrim

http://pt.php.net/rtrim

http://pt.php.net/trim

http://pt.php.net/str_replace

 

a função:

ltrim();

Remove espaço em branco no início da string.

 

a função:

rtrim();

Remove o espaço em branco do final da string.

 

a função:

trim();

Início e final da string.

 

e para remover literalmente os espaços:

str_replace();

Compartilhar este post


Link para o post
Compartilhar em outros sites

o resultado no primeiro post do autor do topico parece estar correto

 

motivo

 

conteúdo do txt

email1@gmail.com;    email2@gmail.com
email3@hotmail.com;

 

na sequencia,

<?php

// carrega o conteudo do txt numa string
$txt = file_get_contents("mail.txt");

// transforme o conteúdo da string num array usando o ; como separador (delimitador)
$arr = explode(";", $txt);

$e = "'";
$d = "'";
$v = ",";

// aplica o trim, que teoricamente remove os espaços no começo e fim.
for($i = 0; $i < count($arr); $i++){    
   echo trim($e.$arr[$i].$d.$v);
}
?>

 

 

no browser vai imprimir:

 

'email1@gmail.com',' email2@gmail.com email3@hotmail.com','',

 

preste atenção nesse ponto.

o que está visualizando é a interpretação do browser.

Para ver o resultado "real", veja o código fonte do resultado.

Provavelmente, o que parece ser um espaço entre "email2@gmail.com email3@hotmail.com", é uma quebra de linha, pois na string original provida pelo arquvo txt, não há um delimitador ";" entre "email2@gmail.com email3@hotmail.com", mas sim, uma quebra de linha.

 

 

dica:

 

$txt = file_get_contents("mail.txt");

// substitui tudo que for quebra de linha por ";"
$txt = str_replace( PHP_EOL, ';', $txt );
$txt = str_replace( "\n", ';', $txt ); // por precaução, não confie somente no uso do PHP_EOL

// aproveita e já remove os espaços
$txt = str_replace( ' ', '', $txt ); // remove o caracter "espaço" comum
$txt = str_replace( ' ', '', $txt ); // Aqui é um caracter especial também usado como espaçamento usando codificação multibyte. Repare que ele é um pouco maior que o comum. Recomendo removê-lo também. Isso é uma dica que poucos conhecem e pode fazer um programador experiente perder horas, até  semanas num projeto.


$arr = explode(';', $txt);
print_r( $arr );

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinon, agradeço pela sua ajuda. Não testei a sua hipótese, porém me pareceu a melhor

Eu resolvi o problema, removendo espaços em branco e quebras de linha pelo world. Não era o que eu queria mas na pressa ta valendo

Eu vou testar o que postou e volto aqui para mostrar o resultado ok?

 

Valeu pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto, tome cuidado ao gerar o .txt das proximas vezes, pois pela falta de atenção não acabou salvando a quebra de linha e o ; .O que era para ser uma tarefa fácil acabou ficando bem complexa :thumbsup:

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.