*   >> Lezen Onderwijs artikelen >> tech >> web development

Regex Modifiers in Php

regex Modifiers in PHP PHP reguliere expressies - Deel V Inleiding Matching is hoofdlettergevoelig. U mag niet weten of wat je zoekt is in kleine letters of hoofdletters of is gevallen gemengd. Het is mogelijk voor u om een ​​hoofdlettergevoelig match te maken. U heeft een zogenaamde modifier voor. Er zijn een flink aantal modifiers en elk heeft zijn eigen doel. We zullen weten sommige in dit deel van de reeks. De i Modifier standaard matching is hoofdlettergevoelig. Om het hoofdlettergevoelig te maken, moet je gebruik maken van wat is de i modifier genoemd.

Dus als we de reguliere expressie, /verzenden /en dan hebben we ook $ subject = "Klik op de knop Verzenden." de volgende code zal niet tot een match: $ subject = "Klik op de knop Verzenden."; $ subject = "Klik op de knop Verzenden."; if (preg_match ("/verzenden /", $ onderwerp)) echo "Matched". "Else echo" Niet Matched "."?> De reguliere expressie niet aansluiten bij de reeks, omdat de reguliere expressie is "sturen", waar S is in kleine letters, maar het onderwerp snaar 'Verzenden' waarbij S in hoofdletters.

Als u deze aanpassing te hoofdlettergevoelig zijn, dan is uw reguliere expressie zal moeten worden /verzenden /i Let op de i net na de tweede schuine streep. Het is de i modifier. De volgende code wordt een match te produceren. $ subject = "Klik op de knop Verzenden."; if (preg_match ("/send /i", $ onderwerp)) echo "Matched". "Else echo" Niet Matched "."?> Matching is opgetreden omdat wij de reguliere expressie hoofdlettergevoelig hebben gemaakt, met de i modifier. Global Matching Het is mogelijk om meer dan één sub-tekenreeks in het onderwerp string die de reguliere expressie zou evenaren.

Standaard wordt alleen het eerste sub string onderwerp geëvenaard. Om alle sub strings in het onderwerp te passen, moet u de functie preg_match_all gebruiken (). Dit is de syntaxis: int preg_match_all (string $ pattern, string $ onderwerp, array & $ wedstrijden [, int $ vlaggen]) Het eerste argument is de reguliere expressie. De tweede is het onderwerp. De derde is de matrix, waarin alle wedstrijden houdt. Het is een tweedimensionale matrix, here (Voor de preg_match () functie is een eendimensionale matrix). Het vierde argument is optioneel.

We zullen slechts ongeveer een vlag praten voor dit argument. Beschouw het volgende onderwerp string: $ subject = "Een kat is een dier Een rat is een dier Een vleermuis is een schepsel..."; In bovengenoemd onderwerp, heb je de sub-strings: kat, rat en vleermuis. Je kat eerst, dan de rat en vleermuis. Elk van deze sub strings overeenkomen met de volgende reguliere expressie: /[CBR] aan /Dit patroon komt overeen met alleen de eerste sub-string "cat".

Als u wilt "kat" en "rat" en "bat" aan te passen, moet u de preg_match_all () functie te gebruiken als de volgende code illustreert: $ subject = "Een kat is een dier Een rat is een dier A.. vleermuis is een wezen. "; if (preg_match_all ("/[CBR] aan /", $ onderwerp, $ wedstrijden, PREG_PATTERN_ORDER)) echo "Matched". "Else echo" niet geëvenaard. "" Echo "echo $ wedstrijden [0] [0]." Echo $ wedstrijden [0] [1]. "Echo $ wedstrijden [0] [2]."?> Het laatste argument in de preg_match_all () functie is een vlag. We zullen binnenkort terug te komen naar het.

De eerste, tweede en derde elementen van de eerste rij van de tweedimensionale array "kat", "rat" en "bat". Dus de output van de bovenstaande code: Matched cat rat bat nu de tweedimensionale matrix heeft twee arrays in de code. De eerste array ontvangt sub snaren afgestemd, in de volgorde waarin de sub koorden waargenomen in het onderwerp. Dit is de wereldwijde matching.

De PREG_PATTERN_ORDER vlag Met deze vlag, de resultaten zijn zodanig dat, $ wedstrijden [0] is een array van volledige patroon past, $ wedstrijden [1] is een array van strings geëvenaard door de eerste haakjes subpatroon, en ga zo maar door. De S en M modifiers de s modifier verwijst naar een enkele lijn en de m modifier verwijst naar meerdere lijnen in een string. Meestal zonder deze modifiers, we krijgen wat we willen. Maar soms willen we houden van \\ n tekens houden. Een bestand op de harde schijf zou kunnen worden gemaakt van vele tekstregels elk eindigen met \\ n karakter.

Standaard is de ^ en $ tekens anker aan het begin en aan het einde van het subject string. Wij kunnen ze het begin en einde van regels verankeren. De s en de m modifiers invloed op de interpretatie van de ^, $ en de dot metahcaracter. Hier is de volledige beschrijving van de S en M modifiers * geen modifiers: Hier kijken we naar het geval waar er geen modifier net na de tweede schuine streep. Onder deze voorwaarde. '' komt overeen met elk teken behalve "\\ n". ^ Past alleen aan het begin van de string en $ past alleen het onderwerp tekenreeks end of vóór \\ n eind.

Dit is het standaard gedrag van de dot metateken. * S modifier: Dit maakt het onderwerp snaar gedraagt ​​als een lange lijn onafhankelijk van elke nieuwe regel dat er mogelijk. Zo '.' komt overeen met elk karakter, zelfs "\\ n". ^ Past alleen aan het begin van de string en $ komt pas aan het eind van de tekenreeks subject of vóór \\ n. * M modifier: Dit maakt het onderwerp snaar gedraagt ​​zich als een reeks van meerdere regels. In het onderwerp string zijn opeenvolgende regels van elkaar gescheiden door de \\ n karakter. Zo '.' komt overeen met elk teken behalve "\\ n".

Op deze manier ^ en $ zijn in staat aan te passen aan het begin of einde van een lijn binnen het onderwerp string. Hier ^ past aan het begin van het touw of net na de \\ n karakter, terwijl $ overeenkomt net vóór de \\ n karakter. We zullen voorbeelden om de bovengenoemde drie voorwaarden illustreren. We beginnen door te kijken naar de eerste voorwaarde. Geen Modifiers Lees het eerste punt boven weer. Beschouw de volgende multiline onderwerp string: $ subject = "De eerste zin \\ n De tweede zin \\ n De derde zin \\ n..."; Het onderwerp reeks bestaat uit drie lijnen.

De volgende expressie geeft een wedstrijd. preg_match ("/seconde /", $ onderwerp) De sub string "tweede", in de tweede lijn (zin) wordt geëvenaard. Beschouw het volgende patroon: /^.*$/Dit patroon (regex) zal naar verwachting onder normale omstandigheden, om de hele reeks aan te passen. Laten we zien of het doet dat met de bovenstaande multi-line onderwerp string. Beschouw de volgende code: $ subject = "De eerste zin \\ n De tweede zin \\ n De derde zin \\ n..."; if (preg_match ("/^.*$/", $ onderwerp)) echo "Matched". "Else echo" Niet Matched ".

"?> Als u deze code uitvoert, Geen overeenkomende zal optreden. Dit is vanwege de aanwezigheid van de \\ n teken in het onderwerp string. Standaard is de dot klasse niet overeenkomt met de \\ n karakter. Ik hoop dat jullie nu waarderen wat het eerste punt boven het over heeft. s modifier Lees het tweede punt boven weer. We zullen een soortgelijke zaak dat we deden voor doen. Beschouw het volgende onderwerp string: $ subject = "De eerste zin \\ n De tweede zin \\ n De derde zin \\ n..."; Het onderwerp reeks bestaat uit drie lijnen. De volgende expressie geeft een wedstrijd.

preg_match ("/seconde /s", $ onderwerp) Merk op dat de s modifier is gebruikt. De sub-string "tweede", in de tweede lijn (zin) wordt geëvenaard. Beschouw het volgende patroon: /^.*$/s Dit patroon (regex) wordt verondersteld om de hele reeks aan te passen. Laten we zien of het doet dat met de bovenstaande multi-line onderwerp string. Beschouw de volgende code: $ subject = "De eerste zin \\ n De tweede zin \\ n De derde zin \\ n..."; if (preg_match ("/^.*$/s", $ onderwerp)) echo "Matched". "Else echo" Niet Matched "."?> Een wedstrijd wordt geproduceerd.

Dit is omdat, de s modifier, de punt (klasse) overeenkomt met de nieuwe regel. Ik hoop dat jullie nu waarderen wat het tweede punt boven het over heeft. De m Modifier Lees het derde punt boven weer. Hier kijken we naar het effect van de m modifier. Beschouw het volgende onderwerp string: $ subject = "De eerste zin \\ n De tweede zin \\ n De derde zin \\ n..."; Het onderwerp reeks bestaat uit drie lijnen. De volgende expressie geeft een wedstrijd. preg_match ("/seconde /m", $ onderwerp) Merk op dat de m modifier is gebruikt. De sub-string "tweede", in de tweede lijn wordt geëvenaard.

Beschouw het volgende patroon: /(^.*$)/m Met m modifier, moet dit patroon (regex) slechts één regel te passen. Laten we zien of het doet dat met de bovenstaande multi-line onderwerp string. Beschouw de volgende code: $ subject = "De eerste zin \\ n De tweede zin \\ n De derde zin \\ n..."; if (preg_match ("/^.*$/m", $ onderwerp)) echo "Matched". "Else echo" Niet Matched "."?> Alleen de eerste zin wordt geëvenaard. Zodat het overeenkwam met de eerste lijn. U kunt overeenkomen en vastleggen van alle drie zinnen in de drie lijnen. Je zet het patroon haakjes (subgroep).

U gebruikt de PHP reguliere expressie functie, preg_match_all () in plaats van preg_match (). U gebruikt ook de vlag PREG_PATTERN_ORDER. De array met de gevangen sub strings is een tweedimensionale array. Het heeft twee arrays. De volgende code illustreert dit: $ subject = "De eerste zin \\ n de tweede zin \\ n de derde zin \\ n..."; if (preg_match_all ("/(^.*$)/m", $ onderwerp, overeenkomt met $, PREG_PATTERN_ORDER)) echo "Matched". "Else echo" niet geëvenaard. "" Echo "echo $ wedstrijden [0] [0]." Echo $ wedstrijden [0] [1]. "Echo $ wedstrijden [0] [2]." Echo "echo $ wedstrijden [1] [0].

" Echo $ wedstrijden [1] [1]. "Echo $ wedstrijden [1] [2].">

Page   <<       [1] [2] [3] [4] [5] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.