Ir para conteúdo

POWERED BY:

Arquivado

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

Maykel-ctba

Exp. Regular: Tentativa de mudança está dando erro

Recommended Posts

Fala galera!

 

Vejam se vocês podem me ajudar. Estou alterando um framework PHP (que montaram internamente aqui na agência no passado) que costumo utilizar para receber uma condição a mais.

 

Estou tentando fazer com que os selects possam receber um... select interno.

 

A principio, a consulta é rodada certinha, e tudo OK. Porém, agora tenho que jogar os resultados destas colunas em objetos. Para isso, atualmente tenho o seguinte trecho de código:

for ($j = 0; $j < $total_campos; $j++)
{
	if (preg_match("(\.)", $this->campos[$j])) // * Se tem algum ponto na string (no caso de um alias)
	{
		$valor_campo = substr($this->campos[$j], strpos($this->campos[$j], ".") + 1, strlen($this->campos[$j]));
		$valores[$i][$valor_campo] = $rs[$valor_campo];
	}
	else
	{
		$valores[$i][$this->campos[$j]] = $rs[$this->campos[$j]];
	}
}

Aqui estou tendo um problema. Todos os registros no for estão caindo na condição do preg_match.

 

Os resultados de $this->campos[$j] são:

pro.proId
usu.usuId
usu.usuNome
usu.usuEmail
usu.usuSenha
usu.usuImagem
usu.usuAtivo
usu.usuExcluido
usu.usuDataCadastro
alu.aluId
ins.insNome
(SELECT usuNome FROM sistema_usuario WHERE usuId = pro.usuId) AS proNome

Eu não gostaria que uma condição em específico não caisse neste preg_match.

(SELECT usuNome FROM sistema_usuario WHERE usuId = pro.usuId) AS proNome

Ou seja, caso tivesse uma condição assim (entre parenteses e o AS), retornasse apenas o que vem depois do AS.

 

Como faço? hahahah

 

 

 

 

 

 

 

 

 

EDIT

 

Tentei dessa maneira, sem alterar a expressão regular... será que é o jeito certo? Ele funciona certo, mas não sei se é a melhor maneira.

for ($j = 0; $j < $total_campos; $j++)
{
    if (preg_match("(\.)", $this->campos[$j]))
    {
        // * Verifica se é um select interno
        if(str_contains($this->campos[$j]," AS "))
        {
            $valor_campo = substr($this->campos[$j],strpos($this->campos[$j]," AS "));
            $valor_campo = str_replace(" AS ","",$valor_campo);
            $valores[$i][$valor_campo] = $rs[$valor_campo];
        }
        // * Caso seja apenas um alias comum...
        else
        {
            $valor_campo = substr($this->campos[$j], strpos($this->campos[$j], ".") + 1, strlen($this->campos[$j]));
            $valores[$i][$valor_campo] = $rs[$valor_campo];
        }
    }
    else
    {
        $valores[$i][$this->campos[$j]] = $rs[$this->campos[$j]];
    }
}

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.