Categories: PHP

Método para validar erros em expressões regulares

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”

Felipe Braz

Share
Published by
Felipe Braz

Recent Posts

Como Criar Rede Wi-Fi de Visitante em Roteadores Ax3000t com OpenWRT

Depois que comprei os roteadores ax3000t e finalmente consegui instalar o openwrt neles. Agora chegou…

3 meses ago

Como criar e validar credenciais seguras em Ansible sem dor de cabeça – Guia passo a passo

A criação e validação de credenciais seguras em ansible sempre gera um pouco de dor…

2 anos ago

Magento e o mistério do servidor somente-leitura

Dia desses, um dos meus servidores entrou com o sistema de arquivos / em modo…

5 anos ago

Localização de arquivos .desktop no ubuntu

O launcher do ubuntu não fornece muitas opções me relação aos icones, muitas vezes apps…

5 anos ago

Ordenar array por tamanho em php

Três meios diferentes para a mesma finalidade: Usando funções nativas do PHP (recomendado): array_multisort(array_map('strlen', $array),…

6 anos ago

Adicionar suporte a rc.local no ubuntu 16.04 ou superior

Embora um script muito útil para tarefas de inicialização de um servidor, essa funcionalidade se…

6 anos ago