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

Asked

Viewed 102 times

-1

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

So far I’ve done it

// 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){   


    }       

}

Someone can give me a light?

1 answer

0


After some researches I found the function "preg_match" very useful for validation of 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 am still learning so do not judge me.But I believe it is very close to what my teacher asked even containing errors here or there.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.