Escolar Documentos
Profissional Documentos
Cultura Documentos
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 Email,
números de telefone, endereços da rua, códigos de fecho de correr, e mais.
Neste tutorial eu mostráloei como as expressões regulares trabalham em PHP, e doulhe uma
introdução curta em escrever suas próprias expressões regulares. Eu darlheei 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 darlhe 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 encontresubstituir, 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 realizamse para o segundo “travtodo”, $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 Email. Um endereço do Email 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: ^ [azAZ09_ . ] + de +@ [azAZ09 ] . [azAZ09
.]+$
Deixarme 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 email$good =
“john@example.com”; /mau email$bad = “blabla@blabla”; /vamos verificar o emailif bom
(preg_match (”/^ [azAZ09_ . ] + de +@ [azAZ09 ] . [azAZ09 .]+$/“, $good)) {eco
“Email válido”;} mais {eco “Email inválido”;}eco “<br/>”; /e verificar o emailif mau
(preg_match (”/^ [azAZ09_ . ] + de +@ [azAZ09 ] . [azAZ09 .]+$/“, $bad)) {eco “E
mail válido”;} mais {eco “Email inválido”;}? >
O resultado deste seria “Email válido. Email inválido”, naturalmente. Nós verificamos apenas
se um endereço do Email fosse válido. Se você envolver o código acima em uma função, você
começouse yourself uma função do validation do Email. 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 xxxxxxxxxx. O código olharia qualquer outra coisa
semelhante: <? php//bom number$good = “1234567890”; /mau number$bad = “453423423”;
/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 sugerilo 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 traduzilos 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 darlhe as ligações a
outros tutorials:
O Tutorial minucioso de 30 Regex (http://www.codeproject.com/dotnet/RegexTutorial.asp)
RegularExpressions.info (http://www.regularexpressions.info/)
Article Source: http://www.articleset.com