Reguliere expressie php hoe de laatste tag te vinden. PHP (reguliere expressie) - wat is het? Voorbeelden en testen van reguliere expressies

Bij het werken met teksten in een moderne taal Bij het programmeren worden ontwikkelaars voortdurend geconfronteerd met de taak om ingevoerde gegevens te controleren op naleving ervan het benodigde sjabloon, zoeken en vervangen van testfragmenten en andere typische verwerkingshandelingen symbolische informatie. Het ontwikkelen van uw eigen verificatie-algoritmen leidt tot tijdverlies, incompatibiliteit van programmacode en complexiteit bij de ontwikkeling en modernisering ervan.

De snelle ontwikkeling van de internet- en WEB-ontwikkeltalen vereiste de creatie van universele en compacte verwerkingstools tekst informatie bij minimale hoeveelheid de code die hiervoor nodig is. De PHP-taal, populair onder beginners en professionele ontwikkelaars, is daarop geen uitzondering. Reguliere expressie als taal tekstsjablonen Hiermee kunt u tekstverwerkingstaken vereenvoudigen en de programmacode met tientallen en honderden regels verminderen. Zonder dit kunnen veel problemen niet worden opgelost.

Reguliere expressies in PHP

De PHP-taal bevat drie mechanismen voor het werken met reguliere expressies: "ereg", "mb_ereg" en "preg". De meest voorkomende is de "preg"-interface, waarvan de functies toegang bieden tot de PCRE-ondersteuningsbibliotheek voor reguliere expressies, oorspronkelijk ontwikkeld voor Perl-taal, dat bij PHP wordt geleverd. Preg-functies zoeken in een bepaalde tekstreeks naar overeenkomsten volgens een specifiek patroon in reguliere expressietaal.

Basisbeginselen van syntaxis

Het is onmogelijk om de hele syntaxis van reguliere expressies in een kort artikel in detail te beschrijven; We presenteren alleen de belangrijkste elementen om de brede mogelijkheden voor de ontwikkelaar te laten zien en de codevoorbeelden te begrijpen.

B is formeel op een zeer complexe manier gedefinieerd, dus laten we de beschrijving vereenvoudigen. Een reguliere expressie is een teksttekenreeks. Het bestaat uit een patroon dat wordt gemarkeerd door een scheidingsteken en een modifier die aangeeft hoe het moet worden verwerkt. Mogelijke opname in sjablonen verschillende alternatieven en herhalingen.

Bijvoorbeeld in de uitdrukking /\d(3)-\d(2)-\d(2)/m de afscheider zal zijn «/» , dan komt het patroon en het symbool "M" zal een modificator zijn.

Alle kracht van reguliere expressies wordt gecodeerd met metatekens. Het belangrijkste metakarakter van de taal is de backslash - “\”. Het keert het type van het personage dat erop volgt om (dat wil zeggen: een gewoon personage wordt een metateken en omgekeerd). Een ander belangrijk metateken is de schuine streep "|", die specificeert alternatieve opties sjabloon. Meer voorbeelden van metatekens:

PHP behandelt bij het verwerken van reguliere expressies spaties als afzonderlijke spaties belangrijk symbool, dus de uitdrukkingen ABCWHERE en ABCWHERE zijn verschillend.

Subpatronen

In PHP worden reguliere subpatronen gescheiden door haakjes en worden ze soms "subexpressies" genoemd. Voer de volgende functies uit:

    Alternatieven benadrukken. Bijvoorbeeld sjabloon hitte(iets|vogel|) komt overeen met de woorden "hitte", "vuurvogel" En "gebraden". En zonder haakjes zal het alleen zo zijn lege regel, "gevogelte" en "gebraden".

    "Spannend" subpatroon. Dit betekent dat als een subtekenreeks overeenkomt in het patroon, alle overeenkomsten als resultaat worden geretourneerd. Laten we voor de duidelijkheid een voorbeeld geven. Gegeven de volgende reguliere expressie: de winnaar ontvangt((gouden|verguld)(medaille|beker)) - en een regel om overeenkomsten te vinden: "de winnaar ontvangt een gouden medaille". Naast de originele zin retourneert het zoekresultaat: "gouden medaille", "medaille", "goud".

Herhalingsoperatoren (kwadratoren)

Bij het schrijven van reguliere expressies is het vaak nodig om herhalingen van cijfers en symbolen te analyseren. Dit is geen probleem als er niet veel herhalingen zijn. Maar wat moeten we doen als we het exacte aantal niet weten? In dit geval moet u speciale metatekens gebruiken.

Om herhalingen te beschrijven, worden kwadratoren gebruikt: metasymbolen om de hoeveelheid te specificeren. Quadrifiers zijn er in twee soorten:

  • algemeen, tussen haakjes;
  • afgekort.

De algemene kwantificator wordt beïnvloed door het minimum en maximaal aantal toegestane herhalingen van het element als twee getallen tussen accolades, bijvoorbeeld: x(2,5). Als het maximale aantal herhalingen onbekend is, wordt het tweede argument weggelaten: x(2,).

Verkorte kwantoren vertegenwoordigen symbolen voor de meest voorkomende herhalingen om onnodige syntaxisrommel te voorkomen. Drie afkortingen worden vaak gebruikt:

1. * - nul of meer herhalingen, wat overeenkomt met (0,).

2. + - een of meer herhalingen, d.w.z. ,).

3. ? - nul of slechts één herhaling - (0,1).

Voorbeelden van reguliere expressies

Voor degenen die reguliere expressies leren, zijn voorbeelden de beste tutorial. We zullen er een paar noemen die ze laten zien. volop mogelijkheden met een minimum aan inspanning. Alle programmacodes volledig compatibel met PHP-versies 4.x en hoger. Voor volledig begrip syntaxis en gebruik van alle taalfuncties raden wij het boek van J. Friedl “Regular Expressions” aan, waarin de syntaxis volledig wordt besproken en voorbeelden van reguliere expressies worden gegeven, niet alleen in PHP, maar ook voor Python-talen, Perl, MySQL, Java, Ruby en C#.

Controle van de juistheid van het e-mailadres

Taak. Er is een internetpagina waarop de bezoeker wordt gevraagd e-mailadres. De reguliere expressie moet controleren of het ontvangen adres correct is voordat berichten worden verzonden. De verificatie garandeert niet dat het opgegeven Postbus bestaat daadwerkelijk en accepteert brieven. Maar het kan duidelijk onjuiste adressen verwijderen.

Oplossing. Zoals in elke programmeertaal kunnen in PHP reguliere expressies voor e-mailadresverificatie worden geïmplementeerd verschillende manieren, en de voorbeelden in dit artikel zijn niet de laatste en enige optie. Daarom zullen we in elk geval een lijst met vereisten geven waarmee rekening moet worden gehouden bij het programmeren, en de specifieke implementatie hangt volledig af van de ontwikkelaar.

Een expressie die controleert of een e-mail geldig is, moet dus aan de volgende voorwaarden voldoen:

  1. De aanwezigheid van het @-symbool in de bronreeks en de afwezigheid van spaties.
  2. Het domeingedeelte van het adres, gevolgd door het @-symbool, bevat alleen geldige tekens voor domeinnamen. Hetzelfde geldt voor de gebruikersnaam.
  3. Wanneer u een gebruikersnaam controleert, moet u bepalen of speciale karakters, zoals een apostrof of Deze tekens zijn potentieel gevaarlijk en kunnen worden gebruikt bij aanvallen zoals SQL-injectie. Vermijd dergelijke adressen.
  4. Bij gebruikersnamen is slechts één punt toegestaan. Deze mag niet het eerste of het laatste teken op de regel zijn.
  5. De domeinnaam moet minimaal twee en maximaal zes tekens bevatten.

Een voorbeeld dat met alles rekening houdt gespecificeerde voorwaarden, is verder in de figuur te zien.

Controle van de geldigheid van URL's

Taak. Controleer of het gegeven tekst reeks valid Merk nogmaals op dat reguliere expressies voor URL-validatie op verschillende manieren kunnen worden geïmplementeerd.

Oplossing. Onze definitieve versie ziet er als volgt uit:

/^(https?:\/\/)?([\da-z\.-]+)\.((2,6))([\/\w \.-]*)*\/?$ /

Laten we nu de componenten in meer detail bekijken met behulp van de figuur.

Creditcardnummers controleren

Taak. Het is noodzakelijk om de juistheid van het ingevoerde nummer te controleren plastic kaart de meest voorkomende betalingssystemen. Optie alleen overwogen voor kaarten

Oplossing. Wanneer u een uitdrukking maakt, moet u rekening houden met mogelijke beschikbaarheid in het ingevoerde aantal spaties. De cijfers op de kaart zijn in groepen verdeeld om het lezen en dicteren gemakkelijker te maken. Daarom is het heel normaal dat iemand probeert het getal op deze manier in te voeren (dat wil zeggen met spaties).

Het schrijven van een universele uitdrukking die rekening houdt met mogelijke spaties en koppeltekens is moeilijker dan simpelweg alle tekens weggooien, behalve cijfers. Daarom wordt aanbevolen om het metateken /D in de expressie te gebruiken, waardoor alle tekens behalve cijfers worden verwijderd.

Nu kunt u direct doorgaan met het controleren van het nummer. Alle bedrijven die produceren kredietkaarten, gebruik een uniek getalformaat. In het voorbeeld wordt hiervan gebruik gemaakt en de klant hoeft de bedrijfsnaam niet in te voeren; deze wordt bepaald door het nummer. Visa-kaarten beginnen altijd met 4 en hebben een nummerlengte van 13 of 16 cijfers. MasterCard begint in het bereik 51-55 met een getallengte van 16. Als resultaat krijgen we de volgende uitdrukking:

Voordat u uw bestelling verwerkt, kunt u dat doen extra controle het laatste cijfer van het getal, dat wordt berekend met behulp van het Luhn-algoritme.

Telefoonnummers controleren

Taak. Controle van de juistheid van het ingevoerde telefoonnummer.

Oplossing. Aantal cijfers op vaste en mobiele nummers telefoonnummers varieert aanzienlijk van land tot land, dus het is niet mogelijk om universeel te controleren of een telefoonnummer correct is met behulp van reguliere expressies. Maar internationale nummers hebben een strikt formaat en zijn ideaal om te vergelijken met een sjabloon. Bovendien steeds landelijker telefoonexploitanten proberen aan dezelfde norm te voldoen. De structuur van het nummer is als volgt:

+CCC.NNNNNNNNNNxEEEE, Waar:

C is de landcode, bestaande uit 1-3 cijfers.

N - nummer van maximaal 14 cijfers.

E - optionele verlenging.

Pluspunt verplicht element, en het x-teken is alleen aanwezig als uitbreiding noodzakelijk is.

Als resultaat hebben we de volgende uitdrukking:

^\+(1,3)\.(4,14)(?:x.+)?$

Cijfers binnen bereik

Taak. U moet een geheel getal binnen een specifiek bereik matchen. Bovendien is het noodzakelijk dat de reguliere expressies alleen overeenkomen met getallen uit een reeks waarden.

Oplossing. Hier zijn enkele uitdrukkingen voor enkele van de meest voorkomende gevallen:

Een IP-adres zoeken

Taak. Het is noodzakelijk om te bepalen of gegeven string geldig IP-adres in IPv4-formaat in het bereik van 000.000.000.000-255.255.255.255.

Oplossing. Zoals bij elke taak in PHP kennen reguliere expressies veel variaties. Dit is bijvoorbeeld:

Online expressiecontrole

Het testen van reguliere expressies op juistheid kan voor nieuwe programmeurs moeilijk zijn vanwege de complexiteit van de syntaxis, die verschilt van ‘gewone’ programmeertalen. Om dit probleem op te lossen, zijn er veel online expressietesters die het gemakkelijk maken om de juistheid van de gemaakte sjabloon op echte tekst te controleren. De programmeur voert de uitdrukking en gegevens in die moeten worden getest en ziet onmiddellijk het verwerkingsresultaat. Meestal is er ook een referentiesectie waar reguliere expressies, voorbeelden en implementatieverschillen voor de meest voorkomende programmeertalen gedetailleerd worden beschreven.

Maar volledig vertrouwen op de resultaten van online services wordt niet aanbevolen voor alle ontwikkelaars die PHP gebruiken. Een reguliere expressie, persoonlijk geschreven en getest, verbetert uw vaardigheden en garandeert de afwezigheid van fouten.

Het meest voorkomende gebruik van reguliere expressies in Perl is in zoek- en vervangoperatoren zoals S//, M/, connectieve operators =~ of != enz. In de regel hebben al deze operators vergelijkbare opties, zoals:

Normaal gesproken worden al deze opties aangeduid als "/x". Ze kunnen zelfs in sjablonen worden gebruikt met behulp van nieuw ontwerp (?...)

Reguliere expressies of patronen zijn hetzelfde als regexp-procedures in Unix. Expressies en syntaxis zijn ontleend aan de vrij verspreide V8-procedures van Henry Spencer, waar ze in detail worden beschreven.

De sjablonen gebruiken de volgende metatekens (tekens die groepen andere tekens aanduiden), vaak de egrep-standaard genoemd:

Metatekens hebben modificatoren (geschreven na het metateken):

In alle andere gevallen worden accolades beschouwd als gewone (reguliere) tekens. Dus "*" is gelijk aan (0,) , "+" is (1,) en "?" - (0,1). n en m kunnen niet groter zijn dan 65536.

Standaard zijn metatekens hebzuchtig. De match wordt zo vaak mogelijk gepropageerd, zonder rekening te houden met het effect van daaropvolgende metatekens. Als je "hun eetlust wilt verminderen", gebruik dan het "?"-symbool. Dit verandert niets aan de betekenis van de metatekens, het vermindert alleen de verspreiding. Dus:

Sjablonen werken op dezelfde manier als dubbele aanhalingstekens, dus je kunt er `\` - symbolen (backslash-symbolen) in gebruiken:

\T - tabbladteken
\N - nieuwe lijn
\R - een retourzending
\A - formaatvertaling
\v - verticale tabellering
\A - telefoongesprek
\ e - ontsnappen
\033 - octale symboolnotatie
\x1A - hexadecimaal
\C[ - controlesymbool
\l - kleine letter volgend teken
\ u - hoofdletter -//-
\L - alle karakters erin kleine letters teen
\U - bovenin -//-
\E - registerwijzigingsbegrenzer
\Q - annuleer actie als metakarakter

Bovendien zijn de volgende metatekens aan Perl toegevoegd:

Merk op dat dit allemaal "één" teken is. Gebruik modifiers om de volgorde aan te geven. Dus:

Daarnaast zijn er denkbeeldige metatekens. Het aanduiden van niet-bestaande symbolen op de plaats waar de waarde verandert. Zoals:

Een woordgrens (\b) is een denkbeeldig punt tussen de tekens \w en \W. Binnen een tekenklasse vertegenwoordigt "\b" het backspace-teken. Metakarakters \A En \Z- zijn vergelijkbaar met "^" en "$", maar als het begin van de regel "^" en het einde van de regel "$" voor elke regel in een reeks met meerdere regels gelden, dan \A En \Z geven het begin en einde aan van een volledige reeks met meerdere regels.

Als groepering wordt gebruikt binnen een sjabloon ( ronde beugels), dan wordt het substringnummer van de groep aangeduid als "\digit". Merk op dat deze groepen, volgens een patroon binnen een expressie of blok, worden aangeduid als "$digit". Daarnaast zijn er aanvullende variabelen:

Voorbeeld:

$s = "Eén 1 twee 2 en drie 3"; if ($s =~ /(\d+)\D+(\d+)/) ( print "$1\n"; # Resultaat "1" print "$2\n"; # "2" print "$+\n" ; # "2" print "$&\n"; # "1 twee 2" print "$`\n" # "Eén " print "$"\n"; # " en drie 3" )

Perl versie 5 bevat aanvullende sjabloonconstructies:

Voorbeeld:

$s = "1+2-3*4"; if ($s =~ /(\d)(?=-)/) # Zoek het getal gevolgd door "-" ( print "$1\n"; # Resultaat "2" ) else ( print "zoekfout\n" ;)

(?!patroon) - “vooruitkijken” door ontkenning:

Voorbeeld:

$s = "1+2-3*4"; if ($s =~ /(\d)(?!\+)/) # Zoek een cijfer dat niet wordt gevolgd door "+" ( print "$1\n"; # Resultaat "2" ) else ( print "search fout\ n"; )

(?ismx) - “interne” modificatoren. Het is handig om te gebruiken in sjablonen, waarbij u bijvoorbeeld een modifier in de sjabloon moet opgeven.

Regels voor reguliere expressies. (regex)

  1. Elk karakter vertegenwoordigt zichzelf, tenzij het een metakarakter is. Als u het effect van een metateken wilt annuleren, plaatst u er "\" voor.
  2. Tekenreeks geeft een reeks van deze tekens aan.
  3. De set mogelijke symbolen (klasse) is vierkante haakjes"", dit betekent dat in deze plaats kan een van de tekens zijn die tussen haakjes staan. Als het eerste teken tussen haakjes “^” is, kan geen van de opgegeven tekens op dit punt in de uitdrukking voorkomen. Binnen een klasse kunt u het symbool "-" gebruiken om een ​​reeks tekens aan te duiden. A-z is bijvoorbeeld een van de kleine letters van het Latijnse alfabet, 0-9 is een getal, enz.
  4. PHP-portaalforum. S.U.

Een van de zeer krachtige en handige functies PHP-taal- ondersteuning voor reguliere expressies. Veel programmeurs, zowel beginners als zeer ervaren, worden geïntimideerd door de ogenschijnlijke complexiteit en ingewikkeldheid van de reguliere expressietaal. Maar ik kan je verzekeren: het is de moeite waard. Het gebruik van reguliere expressies vereenvoudigt het werk van het verwerken van teksten en zwak gestructureerde gegevens aanzienlijk.


Reguliere expressies zijn expressies die in een speciale taal zijn geschreven. Wees niet ongerust, de taal is vrij gemakkelijk te begrijpen; het enige dat je nodig hebt is ervaring en oefening.


Ik denk dat je herhaaldelijk situaties bent tegengekomen waarin je tekst hebt (bijvoorbeeld in Microsoft Word) en je moet er iets belangrijks in vinden. Als u weet wat u precies zoekt, is alles eenvoudig: roep het zoekdialoogvenster op, voer het zoekwoord in, druk op de knop en voila - de tekst is gevonden.


Maar wat gaat u doen als u alleen vooraf weet naar welk soort informatie u op zoek bent? U staat bijvoorbeeld voor de taak om alle adressen te vinden E-mail in een document van een paar honderd vellen. Sommigen zullen het document handmatig bekijken, anderen zullen de hond (@) in de zoekopdracht invoeren en ernaar zoeken. Mee eens - beide opties zijn slopende, ondankbare werkzaamheden.

Dit is waar reguliere expressies te hulp komen. Bij benadering kunnen reguliere expressies worden vergeleken met maskers of sjablonen die over tekst heen worden gelegd: als de tekst overeenkomt met het masker, dan is dit het gewenste fragment. Maar voordat we het gebruik van reguliere expressies gaan overwegen, zullen we vertrouwd raken met hun syntaxis.

Een reguliere expressie is een tekstreeks die is samengesteld volgens bepaalde wetten en regels. Een string bestaat uit karakters en groepen karakters, metatekens, kwantoren en modificatoren.

Onder de symbolen in in dit geval alle symbolen van welk alfabet dan ook worden begrepen. En niet alleen leesbare. U kunt eenvoudig een onleesbaar teken in een uitdrukking invoegen; u hoeft alleen maar de code ervan in hexadecimale vorm te kennen. Bijvoorbeeld:

// leesbare tekens a E // onleesbare tekens en codes \x41 - hetzelfde als de letter "A" \x09 - tabteken

Een karaktergroep bestaat uit verschillende karakters die opeenvolgend zijn geschreven:

Abvg ACZm's

Ik zou meteen uw aandacht willen trekken: de 'spatie' in reguliere expressies wordt ook als een significant teken beschouwd, dus wees voorzichtig bij het schrijven van expressies. Deze tekengroepen zijn bijvoorbeeld VERSCHILLENDE expressies:

ABC WAAR ABC WAAR

Het volgende element van de taal zijn metatekens. Het voorvoegsel "meta" betekent dat deze symbolen enkele andere symbolen of hun groepen beschrijven. De tabel beschrijft de belangrijkste metatekens van de reguliere expressietaal:

Metatekens voor het opgeven van speciale tekens
() Beugels. Definieert geneste expressies.
| Selectie-metakarakter
^ Metateken begin van regel
$ Metakarakter aan het einde van de regel
\N Regelinvoerteken ( hexadecimale code 0x0A)
\R Carriage return-teken (hexadecimale code 0x0D)
\T Tabteken (hexadecimale code 0x09)
\xhh Als u een teken invoegt met de hexadecimale code 0xhh, bijvoorbeeld \x42, wordt ingevoegd Latijnse brief"B"
Metatekens voor het specificeren van groepen tekens
. Punt. Elk karakter.
\D Cijfer (0-9)
\D Geen cijfer (elk teken behalve de tekens 0-9)
\S Leeg teken (meestal spatie en tab)
\S Niet-leeg teken (alle behalve tekens geïdentificeerd door het \s-metateken)
\w Een 'woordenboek'-teken (een teken dat in woorden wordt gebruikt. Normaal gesproken zijn dit alle letters, alle cijfers en een onderstrepingsteken ("_"))
\W Alles behalve de tekens gedefinieerd door het metateken \w

De metatekens uit de tweede helft van de tabel zijn heel gemakkelijk te onthouden. "d" - cijfer (cijfer), "s" - symbool (symbool), "w" - woord (woord). Als de letter groot is, moet u "NIET" toevoegen aan de groepsbeschrijving.

Laten we bijvoorbeeld de tekst nemen: “De rode trui heeft de nummers 1812 en de groene trui heeft de nummers 2009.” Laten we eens kijken naar voorbeelden van de eenvoudigste reguliere expressies:

\d\d\d\d - vindt 1812 en 2009 \D - vindt alle letters, spaties en leestekens \s - vindt alle spaties in de tekst.

Maar het jaartal in ons voorbeeld kan niet in vier, maar in twee cijfers worden geschreven, woorden kunnen andere verbuigingen hebben, enz. Subsets van tekens die zijn opgegeven met vierkante haakjes kunnen hierbij helpen:

Betekent elk cijfer (hetzelfde als \d) - betekent een even cijfer - betekent elk symbool van het Latijnse alfabet (in ieder geval) of cijfer.

De uitdrukking \d\d\d in de testtekenreeks zal bijvoorbeeld alleen 1812 vinden, maar niet 2009. Deze uitdrukking moet worden gelezen als "vind alle reeksen van vier cijfers waarbij laatste cijfer gelijk aan 0,2,4,6 of 8".

Het enige dat we nog moeten noemen zijn kwantoren en modificatoren.

Kwantificator is een speciale constructie die bepaalt hoe vaak een personage of groep personages moet verschijnen. De kwantor wordt tussen accolades "()" geschreven. Er zijn twee opnameformaten mogelijk: nauwkeurig en bereik. Nauwkeurig het formaat is als volgt geschreven:

Hier is X het aantal keren dat het vorige symbool of de vorige groep moet worden herhaald. De uitdrukking bijvoorbeeld

De tweede vorm van opnemen is bereik. Opgenomen als

(X, Y) // of (,Y) // of (X,)

waarbij X het minimum is en Y het maximale aantal herhalingen. Bijvoorbeeld:

gelezen als "twee tot vier cijfers op volgorde geschreven." Als een van de grenzen niet is gespecificeerd, wordt er geen beperking aangenomen. Bijvoorbeeld:

\w(3,) - drie of meer letters. \d(,5) - er zijn helemaal geen getallen, of die zijn er wel, maar niet meer dan vijf.

Kwantificatoren kunnen worden toegepast op een enkel teken of op een groep:

[A-Jaa-ya](1,3)

Deze constructie selecteert uit de tekst alle Russische woorden uit één, twee of drie letters(bijvoorbeeld 'of', 'niet', 'ik', 'ik ga', enz.)

Behalve gekrulde beugels Er zijn nog drie kwantificeringsmetakarakters: “*” (sterretje), “+” (plus) en “?” (vraag). Ze worden gebruikt in gevallen waarin het minimale en maximale aantal vereiste herhalingen vooraf onbekend is. Wanneer u bijvoorbeeld naar e-mailadressen zoekt, kunt u van tevoren niet zeggen hoeveel tekens er in de gebruikersnaam staan ​​(vóór 'hond') en hoeveel tekens er in de domeinnaam staan ​​(na 'hond').

Het metateken "*" wordt gelezen als "elk bedrag vanaf nul of meer", d.w.z. ontwerp

definieert een willekeurig aantal opeenvolgende letters, inclusief hun volledige afwezigheid.

Het "+"-symbool verschilt alleen van een asterisk doordat het ten minste één teken vereist. Die. ontwerp

komt overeen met elke digitale reeks met een of meer cijfers.

Symbool "?" komt overeen met de afwezigheid of aanwezigheid van een enkel personage. Die. ontwerp

komt overeen met elke digitale reeks met één of twee cijfers.

Hier is het de moeite waard om een ​​dergelijk kenmerk van de antiifiers "*" en "+" te vermelden als hebzucht. Het punt is dat deze karakters standaard overeenkomen met de langst mogelijke reeks karakters. Voor de regel "moeder heeft het frame gewassen" is de uitdrukking bijvoorbeeld:

zal “mama soap ra” kiezen, wat enigszins onverwacht is, omdat we verwachtten “ma” te krijgen. Om dit gedrag te veranderen, gebruikt u het metateken "?" (vraagteken) onmiddellijk na de kwantor geschreven. Het beperkt de ‘honger’ van kwantoren door hen te dwingen de eerste wedstrijd terug te geven in plaats van de langste. Laten we nu het vorige voorbeeld veranderen:

en verkrijg de vereiste overeenkomst "ma".

Het laatste element van de taal is modificatoren. Een modifier is een speciaal teken dat de “systeem”-parameters definieert voor het analyseren van reguliere expressies. Er zijn slechts vier van dergelijke symbolen, ze kunnen afzonderlijk of tegelijkertijd worden gebruikt:

i Schakelt hoofdletterongevoelige modus in, d.w.z. hoofdletters en kleine letters in de uitdrukking verschillen niet.
M Geeft aan dat de tekst die wordt doorzocht, moet worden behandeld alsof deze uit meerdere regels bestaat. Standaard behandelt de reguliere expressie-engine tekst als één enkele tekenreeks, ongeacht wat deze feitelijk is. Dienovereenkomstig geven de metatekens "^" en "$" het begin en einde van de gehele tekst aan. Als deze modifier is opgegeven, geven ze respectievelijk het begin en het einde van elke tekstregel aan.
S Het standaard metateken is "." neemt het newline-teken niet op in de definitie ervan. Die. voor tekst met meerdere regels retourneert de uitdrukking /.+/ alleen de eerste regel, en niet de gehele tekst zoals verwacht. Als u deze modifier opgeeft, wordt deze beperking opgeheven.
U Maakt alle kwantitatieve metatekens standaard 'niet hebzuchtig'. In sommige wijzigingen van de taal (met name in PHP) wordt in plaats van “U” het teken “g” gebruikt, wat meer consistent is met de betekenis (“g” is een afkorting van het Engelse “greedy”, “greedy” ).

De tabel toont de meest populaire en noodzakelijke voorbeelden normale uitdrukkingen. Sommige ervan lijken misschien ingewikkeld en omslachtig voor u, maar met gedetailleerde studie zult u het ongetwijfeld begrijpen.

Reguliere expressies in PHP.

Ontworpen voor het werken met reguliere expressies in PHP speciale functies, een lijst waarvan en korte beschrijving staan ​​in de tabel:

int preg_match (tekenreekspatroon, tekenreeksonderwerp [, array-matches])

De functie controleert of de inhoud van het onderwerp overeenkomt met het patroonpatroon. Retourneert 1 als er overeenkomsten zijn gevonden, en retourneert anders 0. Als u de optionele array-parameter Matches opgeeft, wordt er bij het uitvoeren van de functie één enkel element in ingevoerd: de eerste gevonden overeenkomst.

"; print_r($gevonden); ?>

int preg_match_all (tekenreekspatroon, tekenreeksonderwerp, array komt overeen met [, int-volgorde])
De functie is identiek aan de vorige, met het enige verschil: het doorzoekt de volledige tekst en retourneert ALLE overeenkomsten die in de reeks overeenkomsten zijn gevonden.
mixed preg_replace (gemengd patroon, gemengde vervanging, gemengd onderwerp [, int limit])
Net als zijn beide voorgaande functies zoekt preg_replace naar een stukje tekst dat overeenkomt met een patroon. De functie vervangt alle gevonden fragmenten door de tekst die is opgegeven in de parameters.Vóór het reinigen:\n$text\n\n"; $text = preg_replace("/(\n \s(2,))/"," ",$text); echo " Na het reinigen:\n$text"; // geeft tekst weer zonder speciale tekens // en extra spaties?>
gemengde preg_replace_callback (gemengd patroon, gemengde callback, gemengd onderwerp [, int limit])
De functie is een uitgebreide versie van de vorige. Het belangrijkste verschil is dat aan deze functie in de parameters de naam wordt doorgegeven van de functie die de tekst analyseert en vervangende tekst genereert.
array preg_split (stringpatroon, stringonderwerp [, int limit [, int flags]])
Deze functie is vergelijkbaar met de functies explode() en split(). De eigenaardigheid is dat de separator dat niet is vaste string, maar een reguliere expressie. De functie splitst de brongegevens in elementen en plaatst deze in de uitvoerarray.
array preg_grep (tekenreekspatroon, array-invoer)
De functie is bedoeld voor regelmatig zoeken in arrays. Voor de zoekopdracht worden een sjabloon en een array met invoergegevens opgegeven, en wordt een array geretourneerd die alleen bestaat uit elementen die overeenkomen met de sjabloon.

De lijst met beschouwde functies is verre van compleet, maar ruim voldoende voor een succesvolle start met het werken met reguliere expressies. Als je geïnteresseerd bent in dit onderwerp, lees dan zeker verder lezen(bijvoorbeeld Friedl's boek "Regular Expressions"). Daarnaast raad ik voor trainingsdoeleinden aan om er een te installeren speciale programma's voor het testen van reguliere expressies (bijvoorbeeld "PCRE" of "RegEx Builder").

) Ik heb je een voorbeeld laten zien van het gebruik van reguliere expressies om specifieke stukken te vinden broncode Pagina's. Nu zullen we leren hoe we ze zelf kunnen schrijven. Deze vaardigheid helpt je bij het schrijven, het verwijderen van tekst uit onnodige fragmenten en het zoeken naar de benodigde delen grote volumes tekst enzovoort.

Dit onderwerp is behoorlijk ingewikkeld, maar ik zal proberen het meest kort te behandelen belangrijke punten. Ik weet niet hoe succesvol ik zal zijn, maar ik hoop dat de les nuttig zal zijn.
Laten we dus beginnen met het feit dat er verschillende functies zijn voor het werken met reguliere expressies in PHP, maar er worden er drie het vaakst gebruikt:

  • preg_replace - zoek en vervang een geschikt exemplaar reguliere expressie tekst;
  • preg_match - gewoon een gewone zoekopdracht;
  • preg_split - tekst zoeken en splitsen.

Door ten minste, in voorgaande lessen hebben we precies deze gebruikt. Om precies te zijn, in plaats van preg_match was er preg_match_all, maar dit is in essentie hetzelfde, alleen onderbreekt de laatste de zoekopdracht niet na de eerste bevinding. Dat wil zeggen dat als we preg_match gebruiken, we niet alle exemplaren zullen vinden, maar alleen de eerste.

Het is vrij eenvoudig om te kiezen welke functie u in welke situatie wilt gebruiken. We moeten vervangen - we gebruiken vervangen, zoals in het geval waarin we onnodige delen van de paginacode moesten verwijderen, weet je nog?

$page = preg_replace("/ ^]/i", "", $page); $page = preg_replace("/ ^]/i", "", $pagina); $pagina = str_replace("", "", $pagina);

De eerste parameter van de functie is een regulier teken dat bepaalt waarnaar we op zoek zijn. De tweede is waarmee we het vervangen. Ten derde: waar kijken we? Daarom hebben we hier de variabele $page genomen en hieraan het resultaat van de functie preg_replace toegewezen, waarbij we hebben gezocht naar alle invoertype=checkbox, evenals naar openings- en sluitingslabels. Ze hebben ze vervangen door ", dat wil zeggen dat ze ze gewoon hebben verwijderd. Ik hoop dat alles hier duidelijk is. We zullen iets later verdergaan met het analyseren van de uitdrukking zelf (de eerste parameter van de functie).
Er was ook een voorbeeld van het gebruik van preg_match_all, wat handig was om alle links in de resterende tekst te vinden. We hadden toen links nodig omdat ze inhoud bevatten trefwoorden, die we hebben geparseerd. Dit is wat er gebeurde:

Preg_match_all("/ ]+?>(.*?)<\/a>/uis",$page,$ok); for ($j=0; $j ".$ok[$j].""; }

De eerste parameter is opnieuw een reguliere expressie om alle links te vinden die van nature in de “a”-tag zijn ingesloten (als je niet bekend bent met HTML-opmaak, lees dan). De tweede is een variabele die de tekst bevat waarin wordt gezocht. De derde parameter is een variabele waarin het resultaat wordt geplaatst: $ok. Hierna hoeft u alleen nog maar alle noodzakelijke elementen van $ok te doorlopen om de belangrijkste vangsten te krijgen die we nodig hebben. Afzonderlijk moet worden gezegd dat we aan de uitvoer een multidimensionale array krijgen. Daarom hebben we het op zo'n complexe manier weergegeven: $ok[$j]. Om de structuur van de array te bekijken, gebruikt u de onderstaande functie en u zult alles begrijpen.

Print_r($ok);

Het lijkt erop dat we de functies hebben uitgezocht die we voor ons werk hebben gebruikt. Nu hoeft u alleen nog maar te leren hoe u dezelfde reguliere expressies schrijft, die de eerste parameter zijn van elk van deze methoden. Laten we verder gaan met het belangrijkste.

Hoe u regelmatige zinnen schrijft

Laten we eerst eens kijken naar de basisstructuren. Uitdrukkingen hebben opties. Ze worden gespecificeerd met één letter en aan het einde geschreven, voorafgegaan door een schuine streep.

Daarnaast worden de volgende metatekens ondersteund:

Metatekens kunnen op hun beurt modificatoren hebben:

Welnu, nu kunnen we verder gaan met het analyseren van onze reguliere patronen uit de vorige les. Laten we, op basis van de bovenstaande tekens, proberen te begrijpen wat we hebben. Hier is de uitdrukking:

/^]/ik

De eerste en laatste schuine strepen “/” geven aan dat er een reguliere expressie in zit. Tegelijkertijd plaatsen we na de laatste "i", dit is een optie, zoals in de eerste tabel - houd geen rekening met hoofdletters en kleine letters. Binnen de schuine strepen bevindt zich de reguliere reeks zelf. Het begint met het minder dan-teken en de invoertag, en alles wat daarna komt, tot aan het puntteken, is gewoon tekst waar je naar moet zoeken. Maar de punt zelf, en de symbolen erna, zijn interessanter. In dit geval is de constructie “.*?” betekent elke reeks karakters. Dat wil zeggen, als we alleen tekst en deze constructie combineren, dan selecteren we alle tekst na de eerste keer en tot het einde. Om te stoppen moet je een afsluitende HTML-tag ‘meer dan’ of een nieuw regelteken tegenkomen. Dit ontwerp geeft ons precies zo'n kans:

De tekens tussen vierkante haken zijn verbonden door logische OR. Het einde is het groter dan-teken OF het begin van de regel.
Dat is alle uitdrukking, daarin stellen we de startvoorwaarde, midden- en eindvoorwaarde in. Niet moeilijk, toch? Hier is een illustratie voor de duidelijkheid:

Laten we nog een ding bekijken om alles te verstevigen. We zochten naar links met hen:

/]+?>(.*?)<\/a>/uis

We lezen de uitdrukking. Nogmaals, we gooien schuine strepen en opties eerst weg. De "uis"-vlaggen spreken voor zich, behalve "u", die ik niet heb beschreven - het laat zien dat we Unicode-codering gebruiken. Er is niet veel meer over. Het begin is de "a"-tag, die wordt geopend en dan komt de klas

wat betekent NIET groter dan of kleiner dan (HTML-tags openen en sluiten), dat wil zeggen, in dit geval alle tekens. Er wordt “+?” toegevoegd aan de les, wat betekent dat deze les 1 of meerdere keren aanwezig zal zijn (maar zeker minimaal 1 keer). En dan komt de afsluitende html-tag voor de “a”-tag. Er staat tekst in de link die is opgegeven door de groep

We weten immers niet wat voor soort tekst er zal zijn, dus definiëren we zo’n groep. En aan het einde is er een afsluitende tag “a”:

Houd er rekening mee dat we de schuine streep omzeilen met een backslash, zodat deze als eenvoudige tekst wordt waargenomen.

Opluchting. Het onderwerp is echt behoorlijk complex, het vereist oefening. Misschien doe ik iets niet helemaal optimaal en is het mogelijk om andere, correctere reguliere expressies te maken, maar ik ben net zo autodidact als jij, dus oordeel niet strikt, maar deel liever je opties in de reacties. Ook als er iets niet duidelijk is, staan ​​de opmerkingen- en contactpagina voor u klaar.

Laten we beginnen met wat een reguliere expressie is. Beantwoord mij dus deze vraag: zit er een “e” in het woord “test”? "Eten!" jij zegt. Dan stel ik je een tweede vraag: hoe heb je de letter "e" gevonden in het woord "test"? Het antwoord ligt voor de hand: we nemen het eerste teken, dat wil zeggen "t", en vergelijken het met wat we zoeken, dat wil zeggen met "e". Als ze niet gelijk zijn, nemen we het tweede teken, dat wil zeggen "e", en vergelijken dit met wat we zoeken, namelijk "e". Voila! Er is een match gevonden. Antwoord: Het woord "test" bevat de letter "e".

Beantwoord me nu nog een vraag: waar is de reguliere expressie in dit voorbeeld? Ik hoop dat je geraden hebt dat de reguliere expressie hier is wat we zoeken in het woord 'test'. Dat wil zeggen dat de letter "e" in dit voorbeeld een reguliere expressie is.

Waarvoor worden reguliere expressies gebruikt in PHP? In mijn praktijk werden bijvoorbeeld reguliere expressies gebruikt om te bepalen of een e-mailadres correct was samengesteld. Dergelijke uitdrukkingen worden ook gebruikt om de juistheid van de gebruikersnaam en het wachtwoord te bepalen. Met reguliere expressies kunt u het adres in een link vinden en opslaan. Er zijn veel dingen die u kunt doen. Door dit te analyseren, kunt u de hoofdfunctie van reguliere expressies identificeren, en twee nevenfuncties. Hoofdfunctie, dit is een zoekopdracht naar overeenkomsten in een string. Bijwerkingen zijn onder meer het opslaan van de gevonden matches en het vervangen ervan.

Eerste reguliere expressie

In theorie begrijpen we hoe we het teken ‘e’ in het woord ‘test’ kunnen vinden, maar hoe wordt dit in de praktijk geïmplementeerd? Om reguliere expressies in php te gebruiken, worden meestal de volgende functies gebruikt:

preg_match("reguliere expressie (patroon)", "variabele waarin de zoekopdracht wordt uitgevoerd", "Variabele waarin het zoekresultaat wordt opgeslagen (optionele parameter)"); - Matchfunctie
preg_replace("reguliere expressie (patroon)", "Waarmee moet de gevonden overeenkomst worden vervangen", "variabele waarin de vervanging is gemaakt"); - Vervangfunctie

Laten we deze functies gaan gebruiken. Hier is een voorbeeld van het zoeken naar het teken "e" in het woord "test":

$a = "testen";
if(preg_match("/e/",$a)) echo "gevonden!!";

De code beschrijft de voorwaarde: als er iets wordt gevonden dat overeenkomt met het patroon in de variabele $a, wordt het bericht “gevonden!!” weergegeven. Zoals je misschien hebt gemerkt, bevindt ons sjabloon zich tussen twee "/". In dit geval is het symbool "/" symboliseert het begin en einde van ons patroon. Ik hoop dat dit duidelijk is.

Dit is natuurlijk allemaal interessant... maar ons sjabloon is heel eenvoudig, vind je niet? We hoeven tenslotte zelden een symbool in een variabele te vinden. In de meeste gevallen moeten we veel karakters vinden, en ook onbekende. Hoe te zijn? Laten we onszelf een probleem stellen en proberen het op te lossen. Stel dat we een reeks hebben die bestaat uit cijfers en één onbekende Engelse letter

Hoe vind je deze brief? Er kan elke letter van het Engelse alfabet zijn, dus hoe kun je deze identificeren? Je hebt zelf je vraag beantwoord, er is een letter, dat wil zeggen, deze ligt in het bereik van a tot z. U kunt bereiken gebruiken in reguliere expressies. Als we niet weten welk teken we zoeken, maar we weten zeker dat dit teken een letter van het Engelse alfabet is, dan is de invoer als volgt:

$a = "123a321";
if(preg_match("//",$a)) echo "gevonden!!";

Houd er rekening mee dat het bereik tussen haakjes "[" "]" staat. Alles wat tussen dergelijke haakjes staat, wordt gedefinieerd als een symbool, in dit geval varieert het symbool van a tot z. Als we geen letter maar een cijfer moeten vinden, ziet de invoer er als volgt uit:

$a = "abc1cba";
if(preg_match("//",$a)) echo "gevonden!!";

Ik wil ook opmerken dat reguliere expressies hoofdlettergevoelig zijn, dus de tekens "A" en "a" zijn totaal verschillend. Als u naar beide tekens wilt zoeken, schrijft u als volgt:

$a = "123a321";
if(preg_match("//",$a)) echo "gevonden!!";

Er wordt ook gezocht naar Russische letters, op dezelfde manier uitgevoerd als bij Engelse:

$a = "123×321";
if(preg_match("/[a-zA-Z]/",$a)) echo "gevonden!!";

Metakarakters

We hebben geleerd hoe we naar een onbekend teken in een string kunnen zoeken. Wat te doen als we meerdere karakters moeten vinden? Zogenaamde metasymbolen komen te hulp... Stel dat we een string met cijfers en letters hebben, hoe kunnen we deze in de template beschrijven? Je kan dit doen:

lijn - 123a321
steekproef -

Hmm... de sjabloon komt feitelijk overeen met onze string, en als deze wordt gecontroleerd op conformiteit, zal deze de langverwachte waarheid opleveren! Maar het is nogal een omslachtige plaat, vind je niet?

Zo kun je het inkorten:

lijn - 123a321
steekproef - *

Het lijkt mij dat het korter is. Wat is het “*”-symbool? Dit is hetzelfde metasymbool, het betekent dat het symbool dat we hebben beschreven (namelijk een symbool dat cijfers van 0 tot 9 of letters van het Engelse alfabet, van a tot z) kan bevatten, voor onbepaalde tijd of meer dan één keer kan worden herhaald. Ja Ja! Dit metasymbool zal een match vinden in een lege variabele, aangezien zelfs de afwezigheid van het door ons beschreven symbool waar zal retourneren! Onthoud dit

Welke andere metakarakters zijn er?

Het metateken "+" is bijvoorbeeld vrijwel gelijk aan het metateken "*" met één kleine uitzondering. "*" zal waar retourneren, zelfs als er geen teken is, en "+" zal controleren op de aanwezigheid van ten minste één teken. Dat wil zeggen, als een lijn de aanwezigheid vereist minimuméén teken en gebruik dan "+" in plaats van "*"

Het metateken "?" wordt ook vaak gebruikt. Dit betekent dat de regel niet meer dan één gewenst teken mag bevatten. Laat me een paar voorbeelden geven van de laatste twee metakarakters die ik heb beschreven.

Stel dat we het wachtwoord van de gebruiker moeten controleren op juistheid. Laten we eens nadenken over wat het gebruikerswachtwoord moet bevatten? Ten eerste moet het minstens één karakter zijn. Ten tweede mag het alleen cijfers en letters van het Engelse alfabet bevatten, dus de reguliere expressie ziet er als volgt uit:

$a = "qwerty12345";

Welke karakters hebben we toegestaan? Engelse letters in alle hoofdletters en cijfers. Probeer nu een lege regel achter te laten in plaats van het wachtwoord.

$a = "";
if(preg_match("/+/",$a)) echo "Het wachtwoord is correct";

U zult het bericht “Wachtwoord is correct” niet zien. Waarom? Omdat het metateken "+" de tekenreeks controleerde om te zien of deze ten minste één teken bevatte.

En nu een klein trucje, laten we eens kijken naar onze uitdrukking, we lieten niet toe, nou ja, laten we zeggen dat er een spatie in zat, toch? plaats een spatie aan het einde van het wachtwoord en voer uit

$a = "qwerty12345";
if(preg_match("/+/",$a)) echo "Het wachtwoord is correct";

En waarom zien wij onze melding over het juiste wachtwoord? Het is heel eenvoudig... Functie preg_match(); stopt de controle bij de eerste wedstrijd. Dat wil zeggen, het symbool “q” past in het patroon dat we hebben beschreven, en al het andere is niet langer belangrijk voor de functie. Wat moeten we doen? Hier ziet u hoe u dit kunt oplossen:

$a = "qwerty12345";
if(preg_match("/^+$/",$a)) echo "Het wachtwoord is correct";

Door een "^" aan het begin van een uitdrukking en een "$" aan het einde toe te voegen, vertellen we de functie waar het patroon mee moet overeenkomen alle lijn. Als u deze code uitvoert, ziet u het bericht niet, omdat er een illegaal teken aan het einde van het wachtwoord staat: een spatie

Verander nu het metateken "+" in het metateken "?". Wat denk je dat er gaat gebeuren? Correct, er komt geen bericht over de juistheid van het wachtwoord, aangezien het wachtwoord meer dan één teken bevat. Ik hoop dat ik het werk van deze drie veelgebruikte metakarakters goed heb uitgelegd

Soms is ‘niet’ beter

We hebben in ieder geval geleerd om te controleren of het wachtwoord correct is, en dat is goed! Ik zal je iets vertellen over een andere manier om naar iets in een string te zoeken. Laten we zeggen dat we moeten controleren op de afwezigheid van getallen in een string. Hoe je dat doet? Hier is de regel:

(Ik heb specifiek deze “-_+()”-symbolen erin geïntroduceerd, zodat het leven niet op honing lijkt...) We zouden de volgende uitdrukking kunnen formuleren:

Maar je moet toegeven dat we niet altijd weten welke tekens er in een regel worden gebruikt, maar we weten wel zeker dat er geen cijfers in mogen staan! Het zou daarom logischer zijn om simpelweg een sjabloon te schrijven waarin regels worden overgeslagen Nee cijfers, en niet die waarin dat wel het geval is "Oh mijn God, hoeveel onbegrijpelijke symbolen!!!". Hier is een voorbeeld van een correct samengestelde uitdrukking voor dergelijke problemen:

$a = "a-_+()";
if(preg_match("/^[^0-9]+$/",$a)) echo "Geen cijfers!";

Hoe hebben we dit bereikt? We hebben het symbool ingevoerd Maar! de dop "^" ([^0-9]) aan het begin geeft aan dat dit zo zal zijn zou niet moeten Ik hoop dat dit is opgelost

Laten we het langzaam afronden... Ik zal twee voorbeelden geven met uitleg, waarin we zullen leren hoe we het zoekresultaat in een variabele kunnen opslaan, en hoe we het postadres op juistheid kunnen controleren

Ik heb het gezien en bewaard!

Mijn blog

$een = " Mijn blog";
preg_match("/ /", $a);

In onze reguliere expressie hebben we alle mogelijke karakters beschreven die in een link kunnen worden opgenomen. Ik wil ook letten op de aanhalingstekens en de “/”-tekens in onze uitdrukking. Ze worden voorafgegaan door een backslash, waar is dit voor? Feit is dat "/" en het aanhalingsteken zelf speciale tekens zijn. En om ervoor te zorgen dat de sjabloon ze als gewone symbolen waarneemt, moeten we ze screenen. Ontsnappen doe je door een backslash toe te voegen vóór speciale tekens. Ik hoop dat het duidelijk is

$een = " Mijn blog";
preg_match("/ /", $a, $b);

Daarom is het noodzakelijk om een ​​extra parameter toe te voegen in de vorm van de variabele $b, waarin de gevonden link zal worden opgeslagen. U moet ook weten dat het zoekresultaat in een array is geplaatst. Daarom is de variabele $b een array. De informatie die we zoeken staat onder index 1. Dit betekent dat het zoekresultaat in de variabele $b staat. Laten we het resultaat op het scherm weergeven:

$een = " Mijn blog";
preg_match("/ /", $a, $b);
echo $b;

Het juiste adres is de sleutel tot succes!

En tot slot het antwoord op de vraag: klopt de e-mail? Eerst moet u weten welke tekens zijn toegestaan ​​in adressen? Voor zover ik weet, zijn toegestane tekens onder meer:

  • Engelse letters, cijfers, “_”, “-” ummmm alles lijkt te zijn... We zullen hiervan uitgaan.
  • Vervolgens hebben we "@"
  • Daarna Engelse letters
  • Volgende periode
  • En weer Engelse letters...

De reguliere expressie zal dus als volgt zijn:

$een = " [e-mailadres beveiligd]";
if(preg_match("/^+@+.+$/", $a)) echo "e-mailadres is correct!";
else echo "E-mailadres is NIET correct geschreven!";

Nou... ik hoop dat dergelijke gegevens je nu niet bang maken, en dat je ze heel goed kunt begrijpen.

Als laatste wil ik nog iets zeggen. Het artikel bleek omslachtig en dekte tegelijkertijd slechts een deel van de mogelijkheden. Als u deze zin leest, heeft u deze waarschijnlijk tot het einde gelezen, waarvoor hartelijk dank

Wat betreft de serie artikelen over het ontwikkelen van een cms-blog, het eerste deel van de serie Ik verklaar het gesloten! In de nabije toekomst zullen we beginnen met de implementatie van het beheerderspaneel, dus ‘schakel niet over’. Als u vragen heeft, beantwoord ik deze graag. Het allerbeste voor jou, dat is alles wat ik heb!