Ir para conteúdo

POWERED BY:

Arquivado

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

leooizepi

[resolvido] preg_replace

Recommended Posts

e ae galera..

 

tenho uma string por ex:

 

tabela.CAMPO Está contido em  '1,2'

preciso converter ela para:

 

tabela.CAMPO IN ('1','2')

como fazer isso com preg_replace?

 

valeu!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uhn...já que PHP não é tao forte como PERL e etc nas ER's (pelo menos de replace),pensei nisso:

 

<?php
$a = "tabela.campo Está contida em '1,2'";
preg_match_all("/([a-z]+)\.([a-z]+).*\'([0-9]+)\,([0-9]+)\'/i", $a , $b);
$b = $b[1][0].'.'.$b[2][0].' IN (\''.$b[3][0].'\',\''.$b[4][0].'\')';
echo $b; //tabela.campo IN ('1','2')
?>

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uhn...já que PHP não é tao forte como PERL e etc nas ER's (pelo menos de replace),pensei nisso:

 

<?php
$a = "tabela.campo Está contida em '1,2'";
preg_match_all("/([a-z]+)\.([a-z]+).*\'([0-9]+)\,([0-9]+)\'/i", $a , $b);
$b = $b[1][0].'.'.$b[2][0].' IN (\''.$b[3][0].'\',\''.$b[4][0].'\')';
echo $b; //tabela.campo IN ('1','2')
?>

Abraço!

proust.. quando eu colokei mais variaveis ele nao funcionou... ex:

 

tabela.CAMPO Está contido em  '1,2,4,5,7,10'

esses valores vai ser dinamico..

 

valeu!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tá!Achei que só teriam 2 valores.

Apanhei para fazer em só uma regex...então eis em 2:

<?php
$a = 'tabela.campo Está contida em \'1,2,3,4,5\'';
preg_match_all('/([a-z]+)\.([a-z]+).*\'/i', $a , $b);
preg_match_all('/([0-9]+)/', $a, $c);
$b = $b[1][0].'.'.$b[2][0].' IN (\''.implode('\',\'', $c[0]).'\')';
echo $b;
?>

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tá!Achei que só teriam 2 valores.

Apanhei para fazer em só uma regex...então eis em 2:

<?php
$a = 'tabela.campo Está contida em \'1,2,3,4,5\'';
preg_match_all('/([a-z]+)\.([a-z]+).*\'/i', $a , $b);
preg_match_all('/([0-9]+)/', $a, $c);
$b = $b[1][0].'.'.$b[2][0].' IN (\''.implode('\',\'', $c[0]).'\')';
echo $b;
?>

Abraço!

é isso ae proust.. valeu cara, certinho!! e parabens!! belo código!!

 

abraço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sabia que replaces assim eram possiveis no php (inclusive...brigadao por mostrar que são).

Fabyo,era pra cada número estar entra aspas (se bem que pode ser sem).

E não reparem na ER,peguei a tabela e o campo separadamente pra uma maior versatilidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fabio, só que tenho um problema.. eu posso ter na minha string assim:

 

$a = "bla bla bla, bla bla";

se eu usar a funcao de dar replace na virgula e colocar aspas simples... vai ficar assim

 

$a = "bla bla bla',' bla bla";

e agora?

 

valeu.. abraço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa saber se sempre os dados virao do mesmo jeito pra nao ter erros, e por isso que nao gosto de gambi

 

mas se no seu caso se for só pra isso

 

echo str_replace(", ", "','", $var_nova);

 

mas em todo caso seria legal você tratar esses dados melhor, e tentar colocar os apostrofos antes de dar replace

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa saber se sempre os dados virao do mesmo jeito pra nao ter erros, e por isso que nao gosto de gambi

 

mas se no seu caso se for só pra isso

 

echo str_replace(", ", "','", $var_nova);

 

mas em todo caso seria legal você tratar esses dados melhor, e tentar colocar os apostrofos antes de dar replace

entao fabio.. o sisteminha q to fazendo é um gerador de consulta, onde vai ter todos operadores para o usuario consulta,tipo:

campo A igual a 15 AND campo B esta contido em 1,4,5 AND campo C diferente que 'O que quiser consultar, dinamico'

se eu dar replace na frase que o usuario consulta no CAMPO C vai ficar:

 

O que quiser consultar',' dinamico

que no caso as aspas só tinha q alterar no IN e NOT IN

 

valeu!! abraço!

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.