Você está na página 1de 3

DOMINANDO 

EXPRESSÕES REGULARES EM PHP
| by Dennis Pallett | March 28, 2005

Que são expressões regulares?

Uma expressão regular é um teste padrão que possa combinar várias cordas de texto. Usando
expressões regulares você pode encontrar (e para substituir) determinados testes padrões do
texto, por exemplo “todas as palavras que começam com a letra A” ou “encontram somente
números de telefone”. As expressões regulares são usadas frequentemente em classes do
validation, porque são uma ferramenta realmente poderosa para verificar endereços do E­mail,
números de telefone, endereços da rua, códigos de fecho de correr, e mais.

Neste tutorial eu mostrá­lo­ei como as expressões regulares trabalham em PHP, e dou­lhe uma
introdução curta em escrever suas próprias expressões regulares. Eu dar­lhe­ei também diverso
o exemplo as expressões regulares que são usadas frequentemente.

Expressões regulares em PHP

Usar o regex (expressões regulares) é realmente fácil em PHP, e lá é diversas funções que
existem para fazer o regex que encontra e que substitui. Vamos começar com um
achado simples do regex.

Ter um olhar na documentação da função do preg_match (http://php.net/preg_match). Como
você pode ver da documentação, o preg_match é usado executar uma expressão regular. Neste
caso nenhum substituir é feito, only um achado simples. Copy o código abaixo para dar­lhe um
try.<? o exemplo de php//string$str = “vamos encontrar < bla > do material entre </bla> estes
dois suportes precedentes”; /vamos executar regex$do = o preg_match (”/<bla> (. *) <
/bla>/“, $str, $matches); /verificação se o regex fosse successfulif ($do = verdadeiro) {//
combinou algo, mostra os htmlentities combinados do eco da corda ($matches [“0”]); // também
como o texto entre os Tag ecoa o “<br/>”. $matches [“1”];} mais {// nenhum eco do fósforo
“não poderia encontrar um fósforo”;}? >

Em seguida funcionando o código, é provavelmente uma idéia boa se eu fizer um funcionamento
rápido com o código. Bàsicamente, o núcleo inteiro do código acima é a linha que contem o
preg_match. O primeiro argumento é seu teste padrão do regex. Este é provavelmente o mais
importante. Mais tardesobre neste tutorial, eu explicarei algumas expressões regulares básicas,
mas se você quiser realmente aprender a expressão regular então é a mais melhor se você
olhar em Google para exemplos regulares específicos da expressão.

O segundo argumento é a corda sujeita. Eu suponho que não necessita nenhuma explicação.
Finalmente, o terceiro argumento pode ser opcional, mas se você quiser começar o texto
combinado, ou o texto entre algo, ele é uma idéia boa usá­la (apenas como eu a usei no
exemplo).

A função do preg_match para depois que encontrou o primeiro fósforo. Se você quiser encontrar
TODOS OS fósforos em uma corda, você necessita usar a função do preg_match_all
(http://www.php.net/preg_match_all). Esse não trabalha consideravelmente muito mesmo,
assim lá é nenhuma necessidade explicá­la separada.
Agora que nós tivemos encontrar, vamos fazer encontr­e­substituir, com a função do
preg_replace (http://www.php.net/preg_replace). A função do preg_replace trabalha
consideravelmente similar à função do preg_match, mas preferivelmente há um outro
argumento para a corda da recolocação. Copy o código abaixo, e it.< funcionado? o exemplo de
php//string$str = “vamos substituir o <bla>stuff between</bla> que o bla suporta”; /fazer o
preg replace$result = preg_replace (”/<bla> (. *) < /bla>/“, “<bla>new stuff</bla>”, $str);
htmlentities do eco ($result);? >

O resultado seria então a mesma corda, a não ser que dissesse agora “o material novo” entre os
Tag do bla. Este é naturalmente apenas um exemplo simples, e umas recolocações mais
avançadas podem ser feitas.

Você pode também usar chaves na corda da recolocação. Dizer que você quer ainda o texto
entre os suportes, e adiciona apenas algo? Você usa os $1, os $2, as chaves etc. para aquelas.
Por exemplo: <? o exemplo de php//string$str = “vamos substituir o <bla>stuff between</bla>
que o bla suporta”; /fazer o preg replace$result = preg_replace (”/<bla> (. *) < /bla>/“,
“material do <bla>new (o velho: $1) </bla>”, $str); htmlentities do eco ($result);? >

Isto imprimiria então “vamos substituir o material novo (o velho: material no meio) que o bla
suporta”. $2 realizam­se para o segundo “trav­todo”, $3 para o third, etc.

Isso é sobre ele para expressões regulares. Parece muito difícil, mas uma vez que você agarra
éextremamente fácil contudo uma das ferramentas as mais poderosas ao programar em PHP. Eu
não posso contar o número das épocas que o regex me conservou das horas de funções difíceis
do texto do coding.

Um exemplo

Que um tutorial bom seria sem alguns exemplos reais? Let primeiramente ter um olhar em uma
funçãosimples do validation do E­mail. Um endereço do E­mail deve começar com letras ou os
números, têm então @, então um domínio, terminando com uma extensão. O regex para aquele
seria qualquer outra coisa semelhante: ^ [a­zA­Z0­9_ . ­] + de +@ [a­zA­Z0­9 ­] . [a­zA­Z0­9 ­
.]+$ 

Deixar­me rapidamente explicar esse regex. Bàsicamente, a primeira parte diz que deve todo
ser letras ou números. Então nós começamos @, e em seguida aquele lá deve ser letras e/ou
números outra vez (o domínio). Finalmente nós verificamos por um período, e então para ver se
há uma extensão. O código para usar este regex olha como este: <? php//bom e­mail$good =
“john@example.com”; /mau e­mail$bad = “blabla@blabla”; /vamos verificar o e­mailif bom
(preg_match (”/^ [a­zA­Z0­9_ . ­] + de +@ [a­zA­Z0­9 ­] . [a­zA­Z0­9 ­ .]+$/“, $good)) {eco
“E­mail válido”;} mais {eco “E­mail inválido”;}eco “<br/>”; /e verificar o e­mailif mau
(preg_match (”/^ [a­zA­Z0­9_ . ­] + de +@ [a­zA­Z0­9 ­] . [a­zA­Z0­9 ­ .]+$/“, $bad)) {eco “E­
mail válido”;} mais {eco “E­mail inválido”;}? >

O resultado deste seria “E­mail válido. E­mail inválido”, naturalmente. Nós verificamos apenas
se um endereço do E­mail fosse válido. Se você envolver o código acima em uma função, você
começou­se yourself uma função do validation do E­mail. Manter na mente though que o regex
não é perfeito: apesar de tudo, não verifica se a extensão esteja demasiado longa, ele? Porque
eu quero manter este shorttutorial, eu não darei o regex desenvolvido, mas você pode encontrá­
lo fàcilmente através de Google.

Um outro exemplo

Um outro exemplo grande seria um número de telefone. Palavra que você quer verificar que
números detelefone e para se certificar eles estava no formato correto. Vamos supor que você
quer os números estar no formato do xxx­xxxxxxx. O código olharia qualquer outra coisa
semelhante: <? php//bom number$good = “123­4567890”; /mau number$bad = “45­3423423”;
/vamos para verificar bom numberif (preg_match (”/ d {3} ­ d {7}/“, $good)) {eco “número
válido”;} mais {eco “número inválido”;}eco “<br/>”; /e verificam mau numberif (preg_match
(”/ d {3} ­ d {7}/“, $bad)) {eco “número válido”;} mais {eco “número inválido”;}? >

O regex é razoavelmente simples, porque nós se usam D. Isto significa bàsicamente o “fósforo
todo o dígito” com o comprimento atrás dele. Neste exemplo procura primeiramente 3 dígitos,
então “­” (hífen) e finalmente 7 dígitos. Trabalha perfeitamente, e faz exatamente o que nós
queremos.

Que é exatamente possível com expressões regulares?

As expressões regulares são realmente outra uma das ferramentas as mais poderosas em PHP,
ou toda a língua para essa matéria (você pode a usar em suas réguas do mod_rewrite
também!). Há tanto você pode fazer com regex, e nós riscamos somente a superfície
neste tutorial com alguns exemplos muito básicos.

Se você quiser realmente me escavar no regex sugeri­lo busca em Google para mais tutorials, e
tentativa para aprender a sintaxe do regex. Não é fácil, e há completamente uma curva de
aprendizagem íngreme (em minha opinião), mas a mais melhor maneira aprender é atravessar
muitos dos exemplos, e tenta traduzi­los no inglês liso. Realmente ajudas você aprende a
sintaxe.

No futuro eu dedicarei um artigo completo estritamente aos exemplos, including os mais
avançados, sem nenhuma explanação. Mas para agora, eu posso somente dar­lhe as ligações a
outros tutorials:

O Tutorial minucioso de 30 Regex (http://www.codeproject.com/dotnet/RegexTutorial.asp) 

Regular­Expressions.info (http://www.regular­expressions.info/) 

Article Source: http://www.articleset.com

Você também pode gostar