Ir para conteúdo

POWERED BY:

Arquivado

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

leooizepi

[Resolvido] expressão regular

Recommended Posts

bom dia galera!

 

pessoal tenho a seguinte string:

 

$sql = "SELECT CAMPO1, CAMPO2, CAMPO3 FROM tabela WHERE CAMPO4 = 'blabla'";

eu queria pegar o texto entre SELECT e FROM, ficando apenas:

 

CAMPO1, CAMPO2, CAMPO3

como faço isso?

 

valeu!! abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize a seguinte regra:

(?<=SELECT ).*(?= FROM)
Lembrando que só vai funfar se o SELECT estiver em caixa alta... faça suas modificações para pegar do seu jeito... ou... coloca a expressão em modo de Ignore Case Sensitive (i)

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu certo lucas, fiz assim:

 

$sql = "SELECT CAMPO1, CAMPO2, CAMPO3 FROM tabela WHERE CAMPO4 = 'blabla'";
preg_match("/(?<=SELECT ).*(?= FROM)/i", $sql, $matches);

mais agora aparecer um outro problema, esse acho que é complicado.

 

é assim, eu preciso pegar os campos da minha consulta, no caso eu já consegui com a solução postado aqui.

O retorno da minha solução vai vim separados por virgula, aí eu consigo dividir minha string dando um explode(',',$string), só que por exemplo, há um campo formatado assim:

 

date_format(DATA,'%d/%m/Y')

 

Se eu der o explode por virgula, ele vai dividir meu date_format, desconfigurando meus campos, como que faço para dividir meus campos agora?

 

valeu.. abraço!!

 

ae galera, encontrei o que eu queria, existe uma função em php que traz pra mim os nomes das colunas da SQL:

 

$fields = array();

 

$sql_result = mysql_query($sql) or die ('Erro');

$num = mysql_num_fields($sql_result);

for($i=0; $i<$num; $i++) {

$fields[] = mysql_field_name($sql_result, $i);

}

 

valeu pela força...!! flw!

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.