• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

Tutorial de expresii regulate în preg_match()

6
  • Publicat de WorldIT Guest
  • în PHP · Tehnic
  • — 30 aug., 2011 at 11:27 am

Nota editorului : Acest articol a fost scris de crs12decoder pentru RST.

<?php
$string = "eu cghjb asd gigiigj@yahoo.com si asda";
$pattern = '/cgh/';
preg_match($pattern, $string, $return);
print_r($return);
?>

$variabila reprezintă textul din care extragem informaţii după expresiile regulate.
$pattern reprezintă între conţinând expresiile regulate. Neapărat expresiile se scriu formă linii oblice de mai /[expresie]/.

Scriptul de sus va returna ca cgh dovadă că a în fost găsit string steluţa.

Simbolul *

<?php
$string = "eu cuuuuub asd gigiigj@yahoo.com si asda";
$pattern = '/cu*/';
preg_match($pattern, $string, $return);
print_r($return);
?>

Script-ul va afişa „cuuuuu”.

Prin steluţa, se preiau părţile care încep cu caracterul „c” şi continuă cu zero sau mai multe caractere „u”.

Asemănător este şi simbolul plus +
Singura diferenţă este ca textul preluat trebuie să aibă cel puţin un caracter u după caracterul iniţial „c”.

Semnul întrebării – ?
Ne spune că pot să fie caractere u după caracterul iniţial c sau pot să lipsească.

Expresii din paranteze pătrate
Ţin locul anumitor caractere.

<?php
$string = "eu jksdfb asd gigiigj@yahoo.com si asda";
$pattern = '/j[a-z]/';
preg_match($pattern, $string, $return);
print_r($return);
?>

În pattern avem expresia „j[a-z]”.
Deci se caută string-uri care încep cu litera j şi continuă cu orice altă literă (una singură).

În script-ul de mai sus se va afişa „jk”. Asta pentru ca în string avem „jksdfb”. Începe cu j şi să se mai afişeze încă o literă [a-z] după j în cazul în care această există.

Dacă dorim să preluăm tot cuvântul „jksdfb” folosim expresia „j[a-z]*”.
Dacă o luăm logic, cerem să ni se afişeze ceva care începe cu literă j, şi continuă cu orice altă literă de la a la z. Expresia se opreşte la spaţiul dintre cuvinte deoarece acesta nu este cuprins în [a-z].

Expresiile din paranteze pătrate sunt case sensitive. De exemplu dacă în stringul nostru ar fi „jksDfb”. S-ar afişa doar „jks” deoarece D nu este în [a-z] ci este cuprins în [A-Z].

Pentru a fi afişat întregul cuvânt „jksDfb” punem expresia de forma „j[a-za-Z]*”. Aceasta înseamnă că poate continua cu oricâte caractere cuprinse atât în [a-z] cât şi în [A-Z].

Pentru numere punem la fel condiţia [0-9].
Dacă avem textul „jk2sDfb”, fără condiţia [0-9] ar fi preluat doar „jk”. Oprindu-se la „2”.
Pentru această expresia arată de forma „j[a-za-Z0-9]*”.

Caractere multiple
Pentru caractere multiple scriem numărul tipului de caractere în acolade { }.

Spre exemplu.
Având string-ul „daaa”.
Folosim expresia „da{3}” pentru a marca faptul că dorim părţile care încep cu literă d şi continuă cu exact 3 litere de „a”.
De asemenea putem folosi „da{2,4}” pentru a marca faptul că dorim părţile care încep cu literă d şi continuă cu 2,3,4 (între două sau patru) litere de a.
Sau putem folosi „da{2,}” pentru a marca faptul că dorim să aibă 2 sau mai multe litere de „a”.

Ca demonstraţie practică putem folosi expresiile regulate să extragem e-mail-uri dintr-un string.

<?php
$string = "eu cghjb asd gig_iigj@yahoo.com si asda";
$pattern = '/[a-zA-Z0-9-_.]+@[a-zA-Z0-9]+.[a-zA-z]{2,4}/';
preg_match($pattern, $string, $return);
print_r($return);
?>

Observând pattern-ul am cerut aşa:
String-uri care încep cu orice literă cuprinsă între a-z sau A-Z sau orice număr de la 0 la 9 Sau mai pot conţine simbolul minus „-” sau simbolul underline „_” sau punct „.”

 
 [a-za-Z0-9-_.] 
 

De asemenea simbolul plus + adăugat după „[a-za-Z0-9-_.]” Spune ca poate continuă cu cel puţin încă o literă cuprinsă între a-za-Z0-9 sau „-” , „_” , „.”. DAR va avea la un moment dat un simbol „@” urmat de caractere cuprinse între a-z, A-Z sau 0-9

 
 @[a-za-Z0-9]+ 
 

Şi în continuare trebuie să conţină şi un punct „.” urmat de 2, 3 sau 4 caractere cuprinse între [a-z], [A-Z].

Prin urmare. La e-mail-ul: gig_iigj@yahoo.com şi expresia „[a-za-Z0-9-_.]+@[a-za-Z0-9]+.[a-za-z]{2,4}”

Expresia: [a-za-Z0-9-_.]+ Ţine loc de „gig_iigj”
Expresia: „@” Este chiar „@”
Expresia: [a-za-Z0-9]+ Reprezintă „yahoo”.
Expresia: „.” este chiar punctul de la .com spre exemplu
Expresia: [a-za-z]{2,4} reprezintă com din „.com” Care poate fi „.info” sau „.uk” de aceea trebuie să fie la un range de caractere de minim 2 şi maxim 4.

Mai există şi domenii cu extensii duble . Cum ar fi .co.uk sau .us.com aşa că puteţi folosi expresia [a-za-z.]{2,6}

Etichete: expresii regulate in phpexpresii regulate perl in phpPHPtutorialtutorial in php

— WorldIT Guest a scris 19 articole

Contact | andrei@worldit.info | @worldIT Salut , ma numesc WorldIT Guest si sunt robotelul ce scrie articolele persoanelor ce doresc sa ajute dezvoltarea proiectului prin crearea articolelor guest. Mai multe detalii despre cum poti sa-mi trimiti un articol, aici.

  • Articolul anterior Codecademy – cea mai simplă metodă de a învăţa programare
  • Articolul următor Mesajele spam iau cu asalt calculatoarele românilor

6 Comentarii

  1. yoncy spune:
    august 30, 2011 la 11:49 am

    http://gskinner.com/RegExr/ un tool misto, poate nu il stiu unii, eu asta il folosesc.

  2. Nytro spune:
    august 30, 2011 la 1:50 pm

    Povestea este mult, mult, mult mai lunga.
    Recomand: http://www.regular-expressions.info/

    „The official standard is known as RFC 2822. It describes the syntax that valid email addresses must adhere to. You can (but you shouldn’t–read on) implement it with this regular expression:”

    (?:[a-z0-9!#$%&’*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&’*+/=?^_`{|}~-]+)*|”(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*”)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

    Sursa: http://www.regular-expressions.info/email.html

  3. Roland spune:
    august 30, 2011 la 11:23 pm

    Nu e neaparat ca expresia regulata sa fie intre slashuri (/). Poate fi folosit orice delimitator, cu conditia ca acesta sa fie „escaped” cu un backslash daca apare in expresia regulata. Daca avem multi de / in expresie, e mai comod sa folosim alte delimitatoare, cum ar fi # sau ~. http://www.php.net/manual/en/regexp.reference.delimiters.php

    @Nytro: Nu e buna expresia aceea regulata pentru validarea emailului. Aici se gaseste varianta completa: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html 😀

  4. Adi spune:
    august 31, 2011 la 12:53 am

    Cred ca site-ul asta e cel mai complet REGex tester: http://regextester.com/ Puteti testa dialecte pentru JavaScript, Preg (PHP) si Ereg + contine si informatii complete si foarte bine structurate referitoare la sintaxa.

  5. rohack spune:
    septembrie 8, 2011 la 1:28 pm

    expresiile regulate…o tema foarte larga, care necesita mare atentie mai ales pentru programatorii web

  6. ciw spune:
    septembrie 12, 2011 la 4:40 pm

    Inca nu le-am inteles … trebuie sa ma apuc de studiat mai bine


  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    [wp_rss_retriever url="https://rohacked.bit-sentinel.com/feed/" excerpt="none" items="5" read_more="false" new_window="true" thumbnail="false" cache="0"] RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • mai 2022
    L Ma Mi J V S D
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  
    « dec.    
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Tehnic
  • PHP
  • Tutorial de expresii regulate în preg_match()
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons