1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[PHP]Aplicar expressoes regulares a um vector

Discussão em 'Web Development' iniciada por Armadillo, 4 de Janeiro de 2008. (Respostas: 3; Visualizações: 683)

  1. Armadillo

    Armadillo Folding Member

    Boa tarde a todos.
    Deparei-me (mais uma vez) com um pequeno problema.
    Necessito de filtrar um vector usando expressoes regulares.

    A expressao regular que preciso de filtrar é: FACTURA_*-*-*.txt
    Pretendo devolver este resultado num vector que contenha apenas os valores que correspondem á minha expressao.

    Como poderei fazer isto?

    Exemplo:
    vector a aplicar filtro:
    v1[0]=FACTURA_1-1-22.html
    v1[1]=FACTURA_1-1-12.txt
    v1[2]=FACTURA_3-1-34.pdf
    v1[3]=FACTURA_2-45-45.txt
    v1[4]=FACTURA_9-5-56.txt

    retorno do filtro:
    v2[0]=FACTURA_1-1-12.txt
    v2[1]=FACTURA_2-45-45.txt
    v2[2]=FACTURA_9-5-56.txt


    Agradeço desde já a ajuda.
     
  2. slack_guy

    slack_guy Power Member

    Será isto?
    Código:
    <?php
    
    $v1[0]="FACTURA_1-1-22.html";
    $v1[1]="FACTURA_1-1-12.txt";
    $v1[2]="FACTURA_3-1-34.pdf";
    $v1[3]="FACTURA_2-45-45.txt";
    $v1[4]="FACTURA_9-5-56.txt";
    
    $v2 = array();
    
    foreach ( $v1 as $valor ) {
    	$valores = preg_split("/_|-|\./", $valor);
    	if ( $valores[4] == 'txt' ) {
    		array_push($v2, $valor);
    	}
    }
    
    var_dump($v2);
    ?>
    que devolve isto:
    Código:
    array(3) {
      [0]=>
      string(18) "FACTURA_1-1-12.txt"
      [1]=>
      string(19) "FACTURA_2-45-45.txt"
      [2]=>
      string(18) "FACTURA_9-5-56.txt"
    }
    
    EDIT:
    A mesma coisa (o mesmo resultado), mas de outra forma:
    Código:
    <?php
    
    $v1[0]="FACTURA_1-1-22.html";
    $v1[1]="FACTURA_1-1-12.txt";
    $v1[2]="FACTURA_3-1-34.pdf";
    $v1[3]="FACTURA_2-45-45.txt";
    $v1[4]="FACTURA_9-5-56.txt";
    
    $v2 = array();
    
    foreach ( $v1 as $valor ) {
        if (preg_match("/^FACTURA_\d+-\d+-\d+\.txt$/", $valor)) {
            array_push($v2, $valor);
        }
    }
    
    var_dump($v2);
    ?>
    
     
    Última edição: 4 de Janeiro de 2008
  3. Armadillo

    Armadillo Folding Member

    Desconhecia por completo 'preg_split'.

    Por agora parece-me que funca fixe.

    Obrigadao slack_guy
     
  4. spastikman

    spastikman Banido

    para apanhares aqueles valores nem precisavas de preg_split, preg_match tambem servia (obvio que o mais indicado é mesmo o prog_split).
     

Partilhar esta Página