[PHP]Aplicar expressoes regulares a um vector

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.
 
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:
Back
Topo