How to create a program that identifies whether a variable is valid

-1

I need to construct a program that receives as input a text describing the declaration of a variable in PHP and evaluates if such identification is valid according to the syntax of the language.

So far I've done this

// variável teste
$var = '$var = "avd";';

// loop onde vou trabalhar a entrada
for($i= 1; $i < strlen($var); $i++ ){

  if($var[0] != '$'){ 
        echo 'Toda variável deve começar com $';
        break;
    }
    elseif($var[i$] .... travei){   


    }       

}

Can someone give me a light?

    
asked by anonymous 28.03.2017 / 15:12

1 answer

0

After some research I found the "preg_match" function very useful for validating entries. From this I created the regular expression.

// a variável $var recebe uma declaração de variável.
$var = '$var = "avd";'; 

/************************************************************************************************************

A função regular abaixo analisa a sintaxe do conteúdo da variável $var e retorna "Accept" para uma declaração válida de acordo com a sintaxe do PHP ou "Error" se a declaração estiver fora dos padrões.

[$]{1,2} = Determina que o caracter $ deve obrigatoriamente no inico da string (Deve ocorrer pelo menos UMA ocorrencia, mas aceita uma segunda ocorrencia, pois existem as variáveis variáveis).
[a-z_\x7f-\xff] = Determina que deve existir UMA ocorrencia dos caracteres de "a" ate "z" ou "_"(undescore) e os bytes de 127 à 256.
[a-z0-9_\x7f-\xff]* = Determina que podem haver 0 ou mais ocorrencias dos caracteres de "a" ate "z" ou "_"(undescore) e os bytes de 127 à 256.
[ ]* = Determina que pode haver 0 ou mais espaços.
[=] = Determina que obrigatoria mente deve haver um sinal de "=" nesta possição da string.
[ ] = Determina que pode haver 0 ou mais espaços.
["\']? = Determina que pode haver 0 ou UMA ocorrência dos caracteres " ou '.
[a-z0-9_\$\%\#\@\/\-\ \(\)\&\¨\!\=\+\*]*[ ]*["\']* = determina que podem ocorrer 0 ou mais ocorrências dos caracteres contidos na expressão.
[ ]* = Determina que pode haver 0 ou mais espaços.
["\']? = Determina que pode haver 0 ou UMA ocorrência dos caracteres " ou '.
[;] = determina deve haver obrigatoriamente um ; ao final da expressão.
i = simplifica a sintaxe da expressão determinando que a expressão não é case sensitive.

*************************************************************************************************************/

if(preg_match('/^[$]{1,2}[a-z_\x7f-\xff][a-z0-9_\x7f-\xff]*[ ]*[=][ ]*["\']?[a-z0-9_\$\%\#\@\/\-\ \(\)\&\¨\!\=\+\*]*[ ]*["\']?[ ]*[;]$/i',$var)){

echo "Accept";

}else{

echo "Error";

}

I'm still learning so do not judge me. But I think it's very close to what my teacher asked even if there were mistakes here or there.

    
04.04.2017 / 16:45