leooizepi 1 Denunciar post Postado Dezembro 19, 2008 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
eibon 2 Denunciar post Postado Dezembro 19, 2008 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
leooizepi 1 Denunciar post Postado Dezembro 19, 2008 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
Thiago Alves 3 Denunciar post Postado Dezembro 19, 2008 Tenta usar for each Compartilhar este post Link para o post Compartilhar em outros sites
leooizepi 1 Denunciar post Postado Dezembro 19, 2008 Tenta usar for each como q ficaria nessa funcao? eu to perdido na funcao!! Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Dezembro 19, 2008 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
leooizepi 1 Denunciar post Postado Dezembro 19, 2008 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
Fabyo 66 Denunciar post Postado Dezembro 20, 2008 <?php $var = "tabela.CAMPO Está contido em '1,2,4,5,7,10'"; $var_nova = preg_replace("#([a-z]+.[a-z]+).*('.*?')#i", "\\1 IN (\\2)", $var); echo $var_nova; ?> Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Dezembro 20, 2008 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
Fabyo 66 Denunciar post Postado Dezembro 20, 2008 sobre os apostrofos em cada numero, uma pequena gambi resolve echo str_replace(",", "','", $var_nova); nao gosto de gambi, mas se o cara for mecher só com isso resolve. Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Dezembro 20, 2008 Boa fabyo! Bem mais simples...e aprendi a realmente dar preg_replace no php hoje. Valew! Compartilhar este post Link para o post Compartilhar em outros sites
leooizepi 1 Denunciar post Postado Dezembro 22, 2008 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
Fabyo 66 Denunciar post Postado Dezembro 22, 2008 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
leooizepi 1 Denunciar post Postado Dezembro 22, 2008 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