Em um determinado momento, tive a necessidade de efetuar validações em expressões regulares inseridas pelo usuário em textbox.
Abaixo segue método que eu utilizei para esta validação:
function validaRegex($regex, $escapar=false)
{
if($escapar) $regex = str_replace('/', '/', addslashes($regex));
$teste = null;
ini_set('track_errors', 1);
$teste = @preg_match("/{$regex}/", "<a href="http://$1" target="_blank">[LINK]</a>", $teste);
$ret = @strip_tags($php_errormsg);
ini_set('track_errors', 0);
$r = explode(':', $ret);
return ($ret) ? array(false, trim($r[1])) : Array(true);
}
Para explicar o funcionamento:
A variável $teste (sim, faltou criatividade) recebe o resultado do preg_match, sendo que este recebe no primeiro parametro o valor digitado pelo usuário e o segundo parametro pode ser qualquer porcaria que vier em mente, já que o que nos interessa é se o regex do usuário tem erro ou não
O retorno é um array, sendo que a posição [0] retorna True ou False, e, havendo erro no regex, a posição [1] retorna a mensagem de erro do php
———————————————-
Posted Listening: “Lights Out – UFO”