Ved hjelp av regulære uttrykk i PHP PHP regulære uttrykk - Part VII Innledning Vi har sett noen bruker av regex i PHP. Vi vet hvordan du skal kontrollere om en regex er funnet i et fag streng. Vi vet hvordan de skal finne posisjonen matchet regex i emnestrengen. Vær oppmerksom på at emnet string kan være en hel side med tekst. I denne delen av serien, skal vi lære to viktige funksjoner tittelen "Søk og erstatt" og "The Split Operasjon". Før vi forlater denne delen skal vi snakke om regex skilletegn. La oss starte med en svært liten del kalt Variabler i Regex.
Variabel i Regex Før vi ser på de to funksjonene, la oss være klar over at regex mønsteret kan ha variabler. Følgende kode fungerer: $ var = "am"; $ var = "am"; if (preg_match ("/I $ var /", "Jeg er den ene.")) echo "matchet". "Ellers echo" Ikke Matchet> Her har vi variabelen, $ var = "am" "."; Regex er /I $ var /som /jeg /"jeg" i mønsteret er erstattet av $ var; og matchende oppstår Søk og erstatt Du kan søke etter en kamp i faget streng og har under strenger matchet erstattet. Tenk på følgende lagt streng: "Jeg er en mann du er en mann.".
Under string "mann" forekommer i dette faget på to steder. Du kan ha alle forekomster av under strengen "mann" erstattet til kvinne. Følgende kode gjør dette: $ finalStr = preg_replace ("/man /", "kvinne", ". Jeg er en mann du er en mann."); echo $ finalStr; ?> Du har funksjonen, preg_replace (). Det første argumentet for denne funksjonen er regex. Det andre argumentet er understreng for å erstatte sub streng matchet av regex. Det tredje argumentet er emnet. Denne funksjonen returnerer lagt streng der alle matchet under strengene har blitt erstattet.
Hvis ingen match skjedd, er den opprinnelige strengen returnert. Hvis en feil oppstod, er NULL returneres. Den andre setningen av koden ovenfor ekko tilbake streng. Dette er hva som er gjentatt: Jeg er en kvinne. Du er en kvinne. Så kan du bruke preg_replace () -funksjonen for å søke etter under strenger av en regex og har alle under strenger funnet erstattet av noen erstatning sub streng. Utskiftningen sub strengen er det andre argumentet til funksjonen. Hvis det er mange kamper, er det mulig for deg å erstatte noen av dem, som begynner fra første.
For dette trenger du en fjerde valgfritt argument. Vurdere følgende emne: "Jeg er en mann du er en mann som person er en mann..." Det er tre forekomster av ordet "mann". La oss bare ha de to første erstattes. Dette følgende kode gjør dette: $ finalStr = preg_replace ("/man /", "kvinne", ". Jeg er en mann du er en mann som person er en mann..", 2); echo $ finalStr; ?> Har blitt lagt Et fjerde argument. Vi ønsker de to første forekomster av sub streng, "mann" å bli erstattet, så vi satt to som den fjerde argument. Den fjerde argument er antall forekomster av kampen, ønsker du erstattet.
Den andre setningen i koden ovenfor reflekterer den resulterende strengen som, jeg er en kvinne. Du er en kvinne. At personen er en mann. Denne fjerde argument er valgfritt. Hvis du putter -1 der betyr det at du vil at alle forekomster av matchet sub strengen byttes ut; dette er standard oppførsel i fravær av -1. Det følgende eksempel illustrerer bruken av -1. $ finalStr = preg_replace ("/man /", "kvinne", "Jeg er en mann du er en mann som person er en mann...", 1); echo $ finalStr; ?> Utgangen av koden er: Jeg er en kvinne. Du er en kvinne. At personen er en kvinne.
Så langt har vi sett preg_match () -funksjonen, den preg_match_all () -funksjonen og nå preg_replace () -funksjonen. Telle antall Replacement Made Det er en femte valgfritt argument for preg_replace () -funksjonen. Dette er en variabel. Du velger det navnet du ønsker for variabelen. Følgende kode illustrerer dette: $ finalStr = preg_replace ("/man /", "kvinne", "Jeg er en mann du er en mann som person er en mann...", 2, $ teller); echo $ finalStr. "echo $ teller." ?> Se på argumentene til funksjonen veldig godt. Det første argumentet er regex. Den andre er den nye strengen.
Den tredje er gjenstand; den har tre forekomster av ordet "mann". Den fjerde gir antall erstatnings vi ønsker; det er 2. Den femte er den variabelen som vil holde antall utskiftninger faktisk gjort. Utgangen av koden, er jeg en kvinne. Du er en kvinne. At personen er en mann. 2 Den fjerde argument ønsket to utskiftninger og to utskiftninger ble gjort. Den siste setningen i koden viser antall erstatnings faktisk gjort; det viser verdien av variabelen, som er den femte argument. Det er ikke nødvendig for deg å ha erklært denne variabelen andre steder, før.
Det er mulig at du ikke ville vite hvor mange kamper i faget, og du ønsker å erstatte alle mulige treff og vite antall erstatning. I dette tilfellet den fjerde argument vil være -1 og du vil trenge den femte argument. Følgende kode illustrerer dette: $ finalStr = preg_replace ("/man /", "kvinne", "Jeg er en mann du er en mann som person er en mann...", -1, $ Teller); echo $ finalStr. "echo $ teller." ?> Her alle kampene ville bli erstattet og $ count ville holde antall erstatning, etter gjennomføring av funksjonen. Utgangen fra den ovenstående kode er, I er en kvinne. Du er en kvinne.
At personen er en kvinne. 3 Tre er antall erstatnings laget. Split Operasjon Det er en funksjon for dette. En syntaks for funksjonen er: array preg_split (string $ regex, string $ emne) Den delte funksjonen preg_split () deler en streng til en rekke under strenger og returnerer matrisen. Den bruker en regex som skilletegn. Være standard regex er ikke noe element av den returnerte matrisen. Tenk på følgende gjenstand strengen: $ emne = "en to tre"; Hvis vi vet regex mønster for å identifisere mellomrom mellom ord, så kan vi dele denne strengen i en liste består av ord, "en", "to" og "tre".
\\ Er tegnet klassen for plass. \\ + Vil matche et mellomrom, en eller flere ganger. Regex for å skille de ovennevnte ordene er \\\\ + \\ Vi antar at en plassen kan opprettes ved å trykke på mellomromstasten mer enn én gang. Den følgende kode illustrerer bruken av den delte funksjon med den ovennevnte mønster. $ emne = "en to tre"; $ arr = preg_split ("/\\ + /", $ emne); echo $ arr [0]. "echo $ arr [1]." .? echo $ arr [2] "> I emnestrengen ordene er atskilt med mellomrom Utgangen av ovenstående kode er:.
en to tre Utslipp funksjonen delt ordene i emnestrengen ved hjelp av mellomrom mellom ord, og sette hvert ord som et element i den returnerte matrisen Det er mulig å ha ord i en streng atskilt med et komma og et mellomrom, som $ emne = "en, to, tre"; The regex for å skille disse ordene er:. /\\ + /Følgende kode illustrerer dette:. $ emne = "en, to, tre"; $ arr = preg_split ("/, \\ + /", $ emne); echo $ arr [0] " echo $ arr [1]. "echo $ arr [2].
" ?> Utgangen av ovenstående kode er: en to tre En forenklet syntaks av preg_replace () er: $ StrWithRepl = preg_replace (string regex, string $ erstatning, string $ emne); Fra forklaringen jeg har gitt før, syntaksen her er selvforklarende. Skilletegn må du alltid bruke //skilletegn for regex? Nei PHP gir deg muligheten for å bruke skilletegn av ditt valg. Følgende uttrykk, produserer hver en kamp: preg_match ("! World", "Hello World") preg_match ("{Verden}", "Hello World") preg_match ("'World'", "Hello World") den //standardskilletegn for en kamp kan endres til vilkårlige skilletegn.
I det første eksemplet, skilletegn er !!. I andre uttrykk skilletegn er {}. I det tredje eksempel, skilletegn er ''. Følgende kode viser det tredje tilfellet: if (preg_match ("'World'", "Hello World")) echo "matchet". "Ellers echo" Not Matchet "."?>