Exp. Regular: Tentativa de mudança está dando erro
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]];
}
}Discussão (0)
Carregando comentários...