1 Simulador de Expressões Regulares para Livros Everson F. Leite 1, Tiago Ap. Silva 1 1 Instituto Federal de Educação, Ciência e Tecnologia do Sul de Minas Gerais Câmpus Muzambinho (IFSULDEMINAS) - Estrada de Muzambinho, km 35 - Bairro Morro Preto - Cx. Postal 02 - CEP: 37890-000 - Fone: (35)3571-5051 Abstract. This article proposes a study and subsequent development of an application to validate regular expressions with emphasis on the ISBN (International Standard Book Number). First there will be an introduction to the history and characteristics with ISBN and other characteristic data of literary works and the methodology used in application development. Finally reaching the conclusions. Resumo. Este artigo propõe-se a um estudo e posterior desenvolvimento de uma aplicação para validar expressões regulares com ênfase no ISBN (International Standard Book Number). Primeiramente haverá uma introdução ao ISBN com história e características e outros dados característicos de obras literárias e a metodologia utilizada no desenvolvimento da aplicação. Chegando finalmente as conclusões obtidas. Palavras-chave: isbn, regex, livros, validação, aplicação Keywords: isbn, regex, books, validation, application
2 1. Introdução O livro, maior instrumento disseminador conhecido da 6ª arte, é o resultado de diversas melhorias feitas ao longo da história no tratamento do papel, conservação, acabamento e logicamente na escrita, a alma por assim dizer, sem a qual sua importância seria equivalente a qualquer papel comum encontrado no chão. Seja de ficção, história, biologia ou qualquer outro assunto; É um grande disseminador do conhecimento através dos séculos e seu legado perdura até hoje, inclusive com a disponibilização de obras em formato digital. Dada a sua importância e para manter certo controle sobre as inúmeras obras existentes foi necessária uma padronização para o registro dos livros, idéia essa aplicada pela editora W H Smith com o nome de "Standard Book Numbering" (SBN). Desde então passou a ser amplamente utilizada pelos vendedores de livros e pelas editoras até que em 1972, a International Organization for Standardization transformou-o em uma norma padrão internacional: a ISO 2108. Dada sua importância e, surgindo à iniciativa para a implementação de um simulador em Regex (Expressões regulares). Uma expressão regular, na Informática, define um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras. É um meio preciso de se fazer buscas de determinadas porções de texto. O Simulador teria como objetivo validar a entrada de dados característicos de um livro dando ênfase no número ISBN tanto a versão 10 quanto a 13. Proposta esta a qual este artigo se destina a realizar.
3 2. Sobre o livro Um livro é um volume transportável, composto por páginas encadernadas, contendo texto manuscrito ou impresso e/ou imagens e que forma uma publicação unitária (ou foi concebido como tal) ou a parte principal de um trabalho literário, científico ou outro. A história do livro compreende uma série de inovações realizadas por diversos povos no intuito de gravar o conhecimento e passá-lo de geração em geração. O mundo não seria o mesmo se os povos não pudessem conhecer as idéias de seus antepassados. Um bom exemplo é a filosofia, que até hoje é calcada nas letras escritas por filósofos da antiga Grécia e Alemanha do século XIX e XX. International Standard Book Number, mais conhecido pela sua sigla ISBN, é o Número Padrão Internacional de Livro: um sistema identificador único para livros e publicações não periódicas. Foi criado no Reino Unido, em 1967, pela livraria W H Smith, sendo chamado inicialmente de "Standard Book Numbering" (SBN). Desde então, passou a ser amplamente empregado tanto pelos comerciantes de livros quanto pelas bibliotecas, até que, em 1972, a International Organization for Standardization transformou-o em uma norma padrão internacional: a ISO 2108. 2.b Sobre as Expressões Regulares Imagem 01 Exemplo de um número ISBN Também conhecida como REGEX, é uma composição de símbolos, caracteres com funções especiais, que, agrupados entre si e com caracteres literais, formam uma seqüência, uma expressão. Essa expressão é interpretada como uma regra que indicará sucesso se uma entrada de dados qualquer casarem com essa regra, ou seja, obedecer exatamente a todas as suas condições. (JARGAS, A. M., 2012)
4 3. Desenvolvimento da aplicação Para a criação da aplicação foi escolhida a linguagem PHP, uma linguagem interpretada bastante difundida no Mercado principalmente na área de desenvolvimento Web. O PHP em conjunto com o HTML (Linguagem de marcação de hipertexto) e o CSS oferecem os recursos computacionais para desenvolvimento da parte lógica e de design necessários ao simulador. Os passos para iniciar o desenvolvimento é o seguinte, primeiro constrói-se um formulário em HTML normalmente, utilizando o método POST. Todos a princípio são do tipo "text", note que existe uma combobox para verificar se o ISBN será do tipo 10 ou 13, isso se faz necessário pois cada um possui uma regex própria para tratar suas diferenças. <form name="form1" action="" method="post"></p> <p align="left">título: <input type="text" name="titulo" maxlength="60"></p> <p align="left">autor: <input type="text" name="autor" maxlength="65"></p> <p align="left">editora: <input type="text" name="editora" maxlength="45"></p> <p align="left">edição: <input type="text" name="edicao"></p> <p align="left">número de Páginas: <input type="text" name="numpaginas"></p> <p align="left">resumo: <input type="text" name="resumo"></p> <p align="left">isbn: <select name="opisbn"> <option value="10">isbn 10</option> <option value="13">isbn 13</option> </select></p> <p align="left"><input type="text" name="isbn"></p> <p align="left"><input type="submit" value="enviar"></p></form> Depois de criado o formulário, entramos na parte lógica da aplicação. Antes porém é interessante frisar a função empty do PHP, ela é responsável por verificar se a variável a ser analisada está vazia. Logicamente!empty realiza justamente o contrário ou seja, verifica se a variável tem algum conteúdo. Essa função será utilizada para que não existam erros caso seja invocado algum índice que ainda nem existe pois só são gerados após clicarse no botão submit de um formulário. Também é interessante citar a função preg_match que é utilizada para verificas as expressões regulares no PHP, ela pode ser utilizada da seguinte forma: preg_match ("regex", variavel). Segue então como ficaria um modelo do total de 7 que nossa aplicação teria: if ((!empty(variavel) && (preg_match("regex", variavel))) { echo "VÁLIDO<br>"; else { echo "<errado>inválido<br>"; $ok = FALSE;
5 No código acima verifica-se a variável tem algum conteúdo, isso não influencia em nada na regex, ele apenas previne o erro de chamar um índice que ainda não existe pois só seria criado ao clicar em submit do formulário. Se a expressão retornar verdadeiro entra no if e mostra que a entrada é válida, caso contrário imprime que ela foi considerada inválida e atribui o valor falso a variável ok. Essa variável é declarada no início do código com valor verdadeiro e se em apenas um caso a função preg_match retornar falso, ok será também falso e inviabilizará a construção do modelo de livro com todos os dados já validados. Os comandos que envolvem a regex seguirão o padrão mostrado anteriormente a não ser o ISBN, que como foi visto no esquema do formulário tem 2 campos dedicados ao ISBN, uma combobox perguntando que tipo de versão será analisada e o número propriamente dito. if (!empty($_post['opisbn'])) { if ($_POST['opisbn'] === '10') { if (preg_match("^[0-9]{9[[0-9] X x]$^", $_POST['isbn'])) { echo "<certo>isbn válido</certo><br>"; else { echo "<errado>isbn inválido</errado><br>"; $ok = FALSE; else if ($_POST['opisbn'] === '13') { if (preg_match("^(97(8 9))\d{9(\d X)$^", $_POST['isbn'])) { echo "<certo>isbn 13 válido</certo><br>"; else { echo "<errado>isbn 13 inválido</errado><br>"; $ok = FALSE; Obs: <certo> e <errado> são estilos de fontes pré-definidos no css. Primeiramente verificase o índice opisbn (a combobox) tem valor 10 ou 13. A partir daí a estrutura de decisão é similar ao modelo apresentado. O restante se resume quase que exclusivamente ao css e a aparência que ele irá determinar a aplicação. 3. 2 REGEX Utilizadas ^[aa-zz]+(([aa-zz]+)+)?$^ - É utilizada para os campos título, autor, editora e resumo. Sua função é não aceitar caracteres que não sejam letras. Ela aceita as letras do alfabeto maiúsculas e minúsculas, uma ou mais vezes. Depois ela aceita palavras também com letras
6 maiúsculas e minúsculas 1 ou mais vezes e essa segunda parte também pode ocorrer em mais de uma vez, ainda quanto à segunda parte pode ter uma ocorrência ou nenhuma ou seja, o primeiro bloco é obrigatório ( José ). Já o segundo pode ou não ocorrer ( José Maria ). ^([0-9])+$^ - É utilizada no campo número de páginas, só aceita números inteiros, com uma ou mais ocorrências. ^[0-9]{9(\d X x)$^ - É utilizada para o ISBN 10, ele aceita inteiros de 0 a 9 com 9 ocorrências depois aceita um número, X ou x para o identificador final do ISBN, totalizando 10 dígitos ^(97(8 9))\d{9(\d X x)$^ - É utilizada para validar o ISBN 13, primeiro verifica se os 3 primeiros dígitos são 978 ou 979 (Numeração reservada para obras literárias) depois 9 números inteiros e então verifica se o último digito e um inteiro, X ou x. 4. Conclusão Levando em conta o conhecimento adquirido com estudos sobre Regex e a linguagem PHP chega-se a conclusão a importância das expressões regulares para a computação. Encontrar, analisar e validar conteúdo que segue algum padrão tem inúmeras aplicações inclusive no mercado de trabalho, validando um email, url e etc. Essa técnica aplicada ao cadastro de livros é uma prova da possibilidade de validar formulários com uso de pouquíssima programação, com a vantagem de ter uma sintaxe similar em todas as linguagens que oferecem suporte as expressões regulares, sobressaindo-se, por exemplo, da necessidade de aplicar o Javascript em uma página PHP para realizar tal tarefa. O estudo e desenvolvimento dessa técnica ajudam no desenvolvimento lógico do indivíduo e refina sua capacidade em reconhecer padrões, podendo então tratá-lo a fim de poder classificá-lo como sendo válido ou não.
7 Referências Jargas, A.M. (2012), Expressões Regulares - Uma abordagem divertida, 4ª edição. Febvre, Lucien (1992), O aparecimento do livro. São Paulo : Unesp, 1992. Manual do Utilizador do ISBN (2005) 5ª Edição. International ISBN Agency International Standard Book Number Livro Wikipédia. Disponível em : http://pt.wikipedia.org/wiki/livro Jaques R., Entendendo as Expressões Regulares. Disponível em : http://www.phpit.com.br/artigos/entendendo-as-expressoes-regulares.phpit
8 Anexos Imagem 01: Tela Inicial da aplicação Imagem 02: Tela indicando a validação de todos os campos
Imagem 03: Modelo de livro com todos os campos validados e exibidos 9