Ir para conteúdo

POWERED BY:

Arquivado

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

Sol Gamboa

[Resolvido] Expressão regular /,$/

Recommended Posts

A saida ta gerando

email@hotmail.com,users@gmail.com,

 

eu qro tirar só essa virgula do final e tentei com expressão regular

$sub_tmp2 = preg_replace("/,$/", " ",$sub_tmp);
$sub_tmp2 = preg_replace("/{,$}/", " ",$sub_tmp);
$sub_tmp2 = preg_replace("/[,$]/", " ",$sub_tmp);
$sub_tmp2 = preg_replace("/{,\n}/", " ",$sub_tmp);
$sub_tmp2 = preg_replace("/,\n/", " ",$sub_tmp);
$sub_tmp2 = preg_replace("/.,\n/", " ",$sub_tmp);
e nada funcionou

tm tbm com erg_replace e com str_replace[sem er]

mas ele substitui todas as virgulas, qro subistitui só a que está antes do final de linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm,

 

O que não faltam são possibilidades:

 

 

Usando expressão regular:

<?php
$str = 'email@hotmail.com,users@gmail.com,';

var_dump( preg_replace( '/,$/' , null , $str ) );

 

Usando manipulação de strings:

<?php
$str = 'email@hotmail.com,users@gmail.com,';

var_dump( substr( $str , -1 ) == ',' ? substr( $str , 0 , strlen( $str ) - 1 ) : $str );

 

Usando manipulação de matrizes:

<?php
$str = 'email@hotmail.com,users@gmail.com,';

var_dump( implode( ',' , array_filter( explode( ',' , $str ) , create_function( '$input' , 'return !empty( $input );' ) ) ) );

 

Todas as formas acima terão a seguinte saída:

string(33) "email@hotmail.com,users@gmail.com"

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenho multiplas linha no arquivo

tentei fazer

<?php 
function tiraVirgula($arquivo){
	$open = fopen($arquivo, "r");
	while(!feof($open)){ //enquanto não achar fim do arquivo
		$str .= fgets($open); //le linha do arquivo e armazena em $texto
		$substring = substr($str, 0, -1);
		// $linhas++;   //incrementa $linhas
		}
		$handle = fopen($arquivo, "w");//abre arquivo para gravacao do array
		fwrite($handle, $substring); // escreve o array dentro do arquivo 
		fclose($handle); // fecha o arquivo*/	
}


?>
mas não retorna ><'

 

peguei no linux msm

não ache e manipulei o arquivo por shell XD

 

:%s/BUSCA/TROCA

resolvido

obrigada, []'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, se quiser a função ainda eu mexi nela.

 

 

function tiraVirgula($arquivo){
        $open = fopen($arquivo, "r");
        while(!feof($open)){ //enquanto não achar fim do arquivo
                $str .= fgets($open); //le linha do arquivo e armazena em $str
                $substring = substr( $str , -1 ) == ',' ? substr( $str , 0 , -1 ) : $str; // Se o ultimo caractere for uma vírgula ela é removida.
                
                }
                $handle = fopen($arquivo, "w");//abre arquivo para gravacao da string
                fwrite($handle, $substring); // escreve a string dentro do arquivo 
                fclose($handle); // fecha o arquivo*/   
}

valeu nerd power! hehe gostei

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, se quiser a função ainda eu mexi nela.

 

 

function tiraVirgula($arquivo){
        $open = fopen($arquivo, "r");
        while(!feof($open)){ //enquanto não achar fim do arquivo
                $str .= fgets($open); //le linha do arquivo e armazena em $str
                $substring = substr( $str , -1 ) == ',' ? substr( $str , 0 , -1 ) : $str; // Se o ultimo caractere for uma vírgula ela é removida.
                
                }
                $handle = fopen($arquivo, "w");//abre arquivo para gravacao da string
                fwrite($handle, $substring); // escreve o array dentro do arquivo 
                fclose($handle); // fecha o arquivo*/   
}

valeu nerd power! hehe gostei

 

 

agradeço, quardarei a função para futuros estudos, quem sabe um dia ainda uso de novo

por enquanto na urgencia, vou usar o shell msm ><'

logo dominarei o PHP

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

:%s/BUSCA/TROCA

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

A implementação no PHP ficaria assim:

 

$arquivo = 'seu_arquivo.txt';
$linhas = file( $arquivo );

foreach ( $linhas as $offset => $linha ){
$linhas[ $offset ] = preg_replace( '/,$/' , null , $linha );
}

file_put_contents( $arquivo , implode( PHP_EOL , $linhas ) );

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

:%s/BUSCA/TROCA

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

A implementação no PHP ficaria assim:

 

$arquivo = 'seu_arquivo.txt';
$linhas = file( $arquivo );

foreach ( $linhas as $offset => $linha ){
$linhas[ $offset ] = preg_replace( '/,$/' , null , $linha );
}

file_put_contents( $arquivo , implode( PHP_EOL , $linhas ) );

 

;)

 

 

pode crer XD obrigada, mais consegui fazer tudo completo essa manha, de um jeito melhor que aquele

 

<?php

$log = "log2.txt"; //arquivo
$tmp = "log.tmp";
$newlog = "newlog.txt";
$excluir = "excluir2.txt";

$log_content = file($log); //abre arquivo
foreach($log_content as $s){
    if(preg_match('/(.*)(\s*)=(\s+)(.*)/', $s)) { //procura =
        $array = preg_split('/(\s)=(\s)/', $s); //separa pelo =
        $conta_virtual = $array[0] . "@sociesc.org.br";
        $arquivo = "grupos/" . trim($array[1]); //separa pasta de grupos
        // echo "\nLENDO: " . trim($conta_virtual) . " : " . $arquivo . "\n"; 
        //sleep(1);
        $conta_real = "";
        if(file_exists($arquivo)){ //se arquivo existe
            $content = file($arquivo); //lê conteudo
            foreach($content as $x){
                $conta = preg_split("/([\s,]+)|(\,)/", $x, -1, PREG_SPLIT_NO_EMPTY); 
                foreach($conta as $y) {
                    if(!preg_match('/(.*)@(.*)/', $y)) {
                        $conta_real .= $y . "@sociesc.org.br,";
                    } else {
                        $conta_real .= $y . ",";
                    }
                }
            }
            $conta_real_sem_virgula = preg_replace('/\,$/', '', $conta_real);
            
			// Fazer gravacao no arquivo newlog.txt
			if($conta_real == ""){
				$excluir_conta = "$conta_real_sem_virgula\n";
				$handle = fopen("excluir.tmp","a+");
				fwrite($handle,$excluir_conta);
				fclose($handle);
				copy("excluir.tmp",$excluir);
			}else{
				$conteudo = "$conta_virtual = $conta_real_sem_virgula\n"; //acrescenta nome do grupo
				$handle = fopen($tmp, "a+");//abre arquivo para gravacao do array
				fwrite($handle, $conteudo); // escreve o array dentro do arquivo 
				fclose($handle); // fecha o arquivo
				copy($tmp,$newlog);//copia parara outro arquivo temporario
			}	
            echo "INSERT INTO alias VALUES('$conta_virtual','$conta_real_sem_virgula','sociesc.org.br',NOW(),NOW(),'1');" . "\n";
        } else {
            echo "ERRO: $arquivo não existe\n";
        }
    } else {
        echo "ERRO: conta '$s' não tem = ";
    }
}
	unlink($tmp);
	unlink("excluir.tmp");
?>

 

vlws ai galera, pode dá o tópico como resolvido

[]'s

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.