sexta-feira, 7 de março de 2008

Expressão Regular para encontrar TAGs HTML

Com a expressão regular abaixo eu consigo criar um array como o que está mais abaixo

<[^>]*>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>

 <BODY>

    teste

 </BODY>
</HTML>

O Array gerado:

Matches[0] = <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Matches[1] = <HTML>
Matches[2] = <HEAD>
Matches[3] = <TITLE>
Matches[4] = </TITLE>
Matches[5] = <META NAME="Generator" CONTENT="EditPlus">
Matches[6] = <META NAME="Author" CONTENT="">
Matches[7] = <META NAME="Keywords" CONTENT="">
Matches[8] = <META NAME="Author" CONTENT="">
Matches[9] = <META NAME="Description" CONTENT="">
Matches[10] = </HEAD>
Matches[11] = <BODY>
Matches[12] = </BODY>
Matches[13] = </HTML>

 

Não só para destrinchar o código HTML, mas também para trabalhar com templates essa fórmula de expressão regular é muito usada, imagine o caso de ter um templatezinho do corpo de um email assim:

___________________

Prezado {apelido},

Favor confirme seu cadastro junto nossa empresa, as informações que temos são:

{nome_completo}, nascido em {data_nascimento}, com endereço residencial em {endereco_residencial}.

___________________

Daí usamos a expressão regular {[^}]*} para formar um array com todos os parâmetros do template para substituir depois. Se fossemos usar um mero replace, precisaríamos engessar o código com cada um dos parâmetros usados, usando a expressão regular, a parametrização fica dinâmica, permitindo até que o próprio usuário do sisteminha de email diga o que vai em cada parâmetro.

Por exemplo:

A lista de destinos é composta por:

SELECT Clientes.Apelido, Clientes.Nome, Clientes.DataNascimento, Clientes.Endereco, Clientes.Email
FROM Clientes
ORDER BY Clientes.Nome

E em uma tela do sisteminha, o usuário pode escolher qual dos campos da lista está vinculado a qual dos campos do template, dando uma flexibilidade bem jóia pro envio de email, trabalhinho bem facilitado pela expressão regular.

{apelido} = Clientes.Apelido
{nome_completo} = Clientes.Nome
{data_nascimento} = [ Informe aqui o campo que deseja usar ]
{endereco_residencial} = [ Informe aqui o campo que deseja usar ]

0 comentários: