Shprehje të rregullta zëvendësim i karaktereve php. Shprehje të rregullta PHP. Klasat e personazheve të përjashtuara
PHP, siç i ka hije një gjuhe programimi moderne, i ofron zhvilluesit një sërë funksionesh për përdorimin e shprehjeve të rregullta. Ju mund të kërkoni për shfaqje të vargjeve në vargje të tjera duke përdorur kritere komplekse.
- PREG_PATTERN_ORDER;
- PREG_SET_ORDER.
Rendit sipas Opsionit 1 i grupon rezultatet e kërkimit sipas numrit të shprehjes së rregullt (parazgjedhja). Në rastin e dytë, rezultatet grupohen sipas vendndodhjes së tyre në rresht.
Simboli - element shabllon
Është e rëndësishme të mbani mend se shablloni funksionon me simbole. Programimi ka harruar prej kohësh se çfarë është lloji i të dhënave "karakter". Gjuhët moderne nuk shkojnë poshtë konceptit të një "vargu", por në lidhje me modelin, duhet të kuptoni: simbolet manipulohen këtu.
Ndërtimi i një shablloni është, para së gjithash, specifikimi i sekuencës së kërkuar të karaktereve. Nëse e kuptoni qartë këtë, atëherë nuk do të ketë gabime në shabllon. Në çdo rast, do të jetë shumë më pak.
- a është një element specifik i shabllonit - një simbol.
- a-z është një element shabllon, gjithashtu një karakter, por vetëm me vlerën nga a në z - i gjithë latinishtja me shkronja të vogla.
- 0-9 është një numër, çdo numër, por 1-3 është vetëm 1, 2 ose 3.
Rasti në model është i rëndësishëm. Karakteret e para dhe të fundit të modelit janë domethënëse. Ju mund të specifikoni se ku fillon dhe mbaron shablloni.
Modeli i funksionit
PHP preg match të gjitha përdor sintaksën standarde të shprehjes së rregullt. tregoni një nga simbolet e treguara në to:
- vetëm karakteret a, b, c.
- [^ABC] gjithçka përveç personazheve A, B, C.
- \w dhe \W - karakter tekst ose jo tekst.
- \s dhe \S - karakter i bardhë ose jo i bardhë.
- \d dhe \D - shifror ose joshifror.
Karakteret e përsëritura tregohen me kllapa kaçurrelë - (n,m) dhe i referohen karakterit të mëparshëm.
- n tregon përsëritjen e "jo më pak se";
- m - përsëritja e "jo më".
Sintaksa ofron shumë mundësi për krijimin e shablloneve, por është më mirë të filloni me bazat, domethënë me ato të thjeshta të shkruara në dorën tuaj, në të cilat mungojnë elementë dhe kombinime komplekse.
E thënë thjesht, duke renditur karakteret reale që nevojiten, duke treguar sasitë e tyre të kërkuara dhe duke marrë parasysh që karakteri "^" korrespondon me fillimin dhe "$" në fund të rreshtit, mund të krijoni shabllone të thjeshtë. Duke analizuar shprehjet e rregullta reale dhe të korrigjuara mirë nga ekspertë të kualifikuar, mund të fitoni njohuri solide për të krijuar aplikacione komplekse të preg match all. Arsenali i PHP nuk kufizohet vetëm në këto dy funksione, por ato janë më të përdorurat.
Praktikë e thjeshtë
Modeli i numrit të plotë:
- "/*/"
Gjithashtu një model i plotë, por mund të ketë një shenjë përpara ("+", "-") dhe mund të ketë hapësira shtesë në pjesën e përparme/mbrapa:
- /^[\s|\+|\-](0,1)*/
Po kështu:
- /^[\s|\+|\-](0,1)*(\.)*/ - një numër me një pikë.
- /+@+\.(2,3)/ - opsion për njohjen e e-mail.
Përdorimi i shablloneve tuaja për preg përputhet me të gjitha, shembujt e tyre në internet, analizimi i kodit të faqeve të faqeve të internetit dhe burimeve të tjera ju lejon të krijoni bibliotekën tuaj të shablloneve.
Ka shumë mundësi për të gjetur informacion. Në veçanti, dy ndërtimet e fundit të dhëna më sipër mund të modelohen ndryshe. Në shumë raste, përparësi do t'i jepet shabllonit që siguron përputhjen e dëshiruar më shpejt dhe më saktë. Përdorimi i preg match all në PHP, si dhe funksione të ngjashme në gjuhë të tjera, kërkon praktikë, vëmendje dhe kontroll paraprak të korrektësisë së shablloneve.
Ky artikull ofron një përzgjedhje të shembujve të php regexp. Një koleksion shumë i bukur dhe i dobishëm shembujsh të shprehjes së rregullt. Të gjithë shembujt e shprehjeve të rregullta janë të pranueshme për PHP. Shijojeni për shëndetin tuaj!
Shembull i verifikimit të emrit të domenit
Ky fragment php kontrollon nëse vargu është një emër i vlefshëm domeni.
?:.*)+):?(d+)?/?/i", $url)) ( jehonë "URL juaj është në rregull."; ) else (echo "url i gabuar."; )
Shembull i nxjerrjes në pah të një fjale në tekst
Një shprehje e rregullt shumë e dobishme për kërkimin dhe nxjerrjen në pah të fjalës së dëshiruar në tekst. Kodi është veçanërisht i dobishëm kur krijoni rezultatet e kërkimit.
$text = "Fjali shembull nga KomunitasWeb, regex është bërë popullor në programimin në ueb. Tani mësojmë regex. Sipas wikipedia, shprehjet e rregullta (shkurtuar si regex ose regexp, me forma shumësi regex, regexps ose regexen) shkruhen në një formë formale. gjuhë që mund të interpretohet nga një procesor i shprehjes së rregullt"; $text = preg_replace("/b(regex)b/i", " 1", $text); echo $text;
Një shembull i zbatimit të nxjerrjes në pah të rezultateve të kërkimitWordPress
Hapni skedarin search.php dhe gjeni funksionin the_title(). Zëvendësojeni atë me rreshtin e mëposhtëm:
Echo $title;
Tani, përpara rreshtit të zëvendësuar, futni këtë kod:
\0", $title); ?>
Ruani skedarin tuaj search.php dhe hapni style.css. Shtoni vijën e mëposhtme në të:
Strong.search-fragment ( sfondi: i verdhë; )
Një shembull i marrjes së imazheve ngaMetoda HTML regexp
Kjo pjesë e kodit PHP duke përdorur shprehje të rregullta kërkon për të gjitha imazhet dhe url-në e tyre.
$imazhe = grup(); preg_match_all("/(img|src)=("|")[^"">]+/i", $data, $media); unset ($data); $data=preg_replace("/(img|src)("|"|="|=")(.*)/i","$3",$media); foreach($data si $url) ( $info = pathinfo($url); if (isset($info["extension"])) ( if (($info["extension"] == "jpg") || ($info["extension"] == "jpeg") || ($info["extension"] == "gif") || ($info["extension"] == "png")) array_push($ imazhe, $url); ))
Heqja e fjalëve dublikatë (pa ndjeshmëri)
A ka shpesh fjalë që përsëriten? Atëherë ky shembull i shprehjes së rregullt do të jetë i dobishëm për ju.
$text = preg_replace("/s(w+s)1/i", "$1", $tekst);
Heqja e pikave të dyfishta
E njëjta gjë, vetëm me pika të përsëritura.
$text = preg_replace("/.+/i", ".", $text);
Përputhja e etiketave XML/HTML
Ky funksion i thjeshtë merr dy argumente: një etiketë (që dëshironi të përputhet), kodin xml ose html.
Funksioni get_tag($tag, $xml) ($tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?)".$tag.">.")", $xml, $matches, PREG_PATTERN_ORDER); kthej $matches; )
Kërkoni për etiketat XHTML/XML me vlera specifike të atributeve
Ky shembull është i ngjashëm me funksionin e mëparshëm, vetëm ju mund ta zgjeroni ndjeshëm kërkimin, për shembull gjeni
Funksioni get_tag($attr, $value, $xml, $tag=null) ( if(is_null($tag)) $tag = "\w+"; tjetër $tag = preg_quote($tag); $attr = preg_quote($ attr); $value = preg_quote ($value); $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(["\"])$value\\2[^>]*>(.*?)<\/\\1>/" preg_match_all ($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); ktheje $matches; )
Gjetja e vlerave heksadecimal të ngjyrave
Një shembull i shkëlqyer i një shprehjeje të rregullt që përputhet me vlerat heksadecimal të ngjyrave në vargjet e dhëna. Për ç'farë është kjo? Ndoshta ju dëshironi të shkruani një shërbim të kompresimit të kodit CSS, ose diçka të ngjashme.
$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) (echo "shembulli 6 i suksesshëm."; )
Shembull kërkimititull në një faqe të caktuar
Ky shembull interesant i kodit PHP me regexp gjen dhe kthen tekstin midis etiketave
Feof($fp))( $page .= fgets($fp, 4096); ) $titre = eregi("
Analiza e regjistrave Apache
Shumica e faqeve funksionojnë në serverë të mirënjohur Apache. Nëse faqja juaj funksionon gjithashtu në të, atëherë mund të analizoni regjistrin e serverit duke përdorur php regexp.
//Regjistrimet: Serveri i uebit Apache //Hitjet e suksesshme vetëm në skedarët HTML. E dobishme për numërimin e numrit të shikimeve të faqeve. "^((?#IP-ja e klientit ose emri i domenit)S+)s+((?#autentifikimi bazë)S+s+S+)s+[((?#data dhe ora)[^]]+)]s+"(?: GET|POST|HEAD) ((?#skedar)/[^ ?]+?.html?)??((?#parametrat)[^ ?]+)? HTTP/+"s+(?#kodi i statusit)200s+((?#bajtë të transferuar)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#agjenti i përdoruesit )[^"]*)"$" //Regjistrat: Ueb serveri Apache //404 gabime vetëm "^((?# IP-ja e klientit ose emri i domenit)S+)s+((?#autentifikimi bazë)S+s+S+) s+[((?#data dhe ora)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#parametrat)[ ^ ?"]+)? HTTP/+"s+(?#kodi i statusit)404s+((?#bajtë të transferuar)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#agjenti i përdoruesit )[^"]*)"$"
Shembull i kontrollit të kompleksitetit të fjalëkalimit
Një shembull i shkëlqyer i një shprehjeje të rregullt që kontrollon nivelin e kompleksitetit të një fjalëkalimi. Fjalëkalimi duhet të jetë 6 karaktere i gjatë dhe të përmbajë të paktën një karakter të madh, një karakter të vogël dhe një numër.
"A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?) [-_a-zA-Z0-9](6,)z"
Zëvendësimi i emoticonave të tekstit me emoticon grafikë
Ky kod shembull do të ndryshojë emocionin e tekstit në atë grafik. Një fragment PHP interesant dhe i dobishëm.
$texte="Një tekst me një buzëqeshje:-)"; echo str_replace(":-)"," ",$texte);
Shembull i një shprehjeje të rregullt për të marrë imazhekodi html
Vlen të thuhet se ky kod php përdoret në wordpress për të kërkuar dhe përpunuar imazhe.
post_përmbajtja; $szSearchPattern = "~ ]* />~"; // Ekzekutoni preg_match_all për të kapur të gjitha imazhet dhe për të ruajtur rezultatet në $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics); // Kontrolloni për të parë nëse kemi të paktën 1 imazh $iNumberOfPics = count($aPics); nëse ($iNumberOfPics > 0) ( // Këtu mund të përpunoni imazhet tuaja // Në këtë shembull ato thjesht do të shfaqen në monitor për ($i=0; $i< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>
Shpresoj se e keni gjetur të dobishëm këtë koleksion shembujsh php regexp. Nëse ka shtesa interesante ose shembuj të shprehjeve të rregullta (php), shkruani në komente.
Përshkrimi i funksionit:
Funksioni preg_replace kërkon përputhjet e një shprehjeje të rregullt (model) me të dhënat në një varg (subjekti) dhe i zëvendëson ato me të dhënat e gjetura në zëvendësim.
Argumenti |
Përshkrim |
|
model |
Argumenti i kërkuar. Shprehje e rregullt (modeli i kërkimit) |
varg, varg |
zëvendësim |
Argumenti i kërkuar. Një varg ose grup që përmban të dhëna të përdorura për të zëvendësuar të dhënat në subjekt Ju gjithashtu mund të përdorni një ndërtim të formës \$(1) për lidhjet, që është ekuivalente me \$1; ky ndërtim përdoret nëse lidhja pasohet menjëherë nga një numër (\$(1)1). |
varg, varg |
subjekt | Argumenti i kërkuar. Një varg ose grup që përmban të dhënat që do të zëvendësohen. | varg, varg |
limit | Argument opsional. Numri maksimal i zëvendësimeve. Parazgjedhja është -1 (i pakufizuar) |
ndër |
numëroj | Argument opsional. Një variabël që përmban numrin e zëvendësimeve të bëra. |
ndër |
Funksioni preg_replace() mund të përdoret me modifikuesin /e. Kur ky modifikues është i pranishëm, parametri zëvendësues interpretohet si kod PHP dhe më pas përdoret për zëvendësim.
Shprehje të rregullta
Më vete, duhet të ndalemi te shprehjet e rregullta, pa i kuptuar të cilat është mjaft e vështirë (nëse jo e pamundur) të kuptohet puna e funksionit. preg_replace().
Një përshkrim mjaft i mirë i shprehjeve të rregullta është dhënë në wikipedia.org, pikat kryesore të përdorimit të shprehjeve të rregullta janë përshkruar gjithashtu
Shembuj:
Shembulli 1:
Në këtë shembull, ne i zëvendësojmë të gjithë numrat e vendosur në kllapa me yll.Shembulli 2:
Në këtë shembull, ne zëvendësojmë vargun që korrespondon me të gjithë modelin me të dhënat që korrespondojnë me nënmodelin e parë në referencë \$1. Me fjalë të tjera, "kanë 3 mollë" që korrespondojnë me "/(\w+) (\d+) (\w+)/" do të zëvendësohet me "kanë" që korrespondon me (\w+).
Shembulli 3:
Ky shembull tregon se çfarë ndodh nëse përdorni vargje si model dhe zëvendësim.
Shembulli 4:
Ky shembull tregon se çfarë ndodh nëse përdorni vargje si model, zëvendësim dhe subjekt.
Shembulli 5:
Ky shembull tregon përdorimin e modifikuesit /e, pra kur zëvendësimi interpretohet si kod php. Më poshtë është shndërrimi i karaktereve nga shkronjat e vogla në të mëdha.
Shembulli 6:
Ky shembull tregon përdorimin e argumentit count. Këtu rezultati do të jetë i barabartë me 2, kështu që ka pasur dy zëvendësime.
të përziera preg_ndeshja(modeli i vargut, subjekti i vargut [, grupi &përputhet [, flamujt int [, zhvendosja int]]])Kërkon subjektin e dhënë të tekstit për përputhje me modelin e modelit
Nëse specifikohet parametri shtesë i përputhjeve, ai do të plotësohet me rezultatet e kërkimit. Elementi $matches do të përmbajë pjesën e vargut që përputhet me të gjithë modelin, $matches do të përmbajë pjesën e vargut që përputhet me nënmodelin e parë, e kështu me radhë.
flamujt mund të marrin vlerat e mëposhtme:
PREG_OFFSET_CAPTURE
Nëse specifikohet ky flamur, për çdo nënvarg të gjetur do të tregohet pozicioni i tij në vargun burimor. Është e rëndësishme të mbani mend se ky flamur ndryshon formatin e të dhënave të kthyera: çdo dukuri kthehet si një grup, elementi zero i të cilit përmban nënvargun e gjetur dhe elementi i parë përmban kompensimin. Ky flamur është i disponueshëm në PHP 4.3.0 dhe më të lartë.
Parametri shtesë i flamujve është i disponueshëm që nga PHP 4.3.0.
Kërkimi kryhet nga e majta në të djathtë, nga fillimi i rreshtit. Parametri opsional i kompensimit mund të përdoret për të specifikuar një pozicion alternativ fillestar për kërkimin. Parametri shtesë i kompensimit është i disponueshëm që nga PHP 4.3.3.
Koment: Përdorimi i parametrit offset nuk është ekuivalent me zëvendësimin e vargut të përputhur me substr($subject, $offset) kur thirret funksioni preg_match_all(), meqenëse modeli mund të përmbajë kushte të tilla si ^ , $ ose (? . Krahaso:
Ndërsa ky shembull
Funksioni preg_match () kthen numrin e ndeshjeve të gjetura. Mund të jetë 0 (nuk u gjet asnjë përputhje) dhe 1 sepse preg_match () ndalon së punuari pas ndeshjes së parë të gjetur. Nëse keni nevojë të gjeni ose numëroni të gjitha ndeshjet, duhet të përdorni funksionin preg_match_all(). Funksioni preg_match () kthehet I RREMË në rast se ndodh ndonjë gabim gjatë ekzekutimit.
E dhënë: Mos e përdorni funksionin preg_match (), nëse keni nevojë të kontrolloni praninë e një nënvargu në një varg të caktuar. Përdorni për këtë strpos () ose strstr(), pasi ata do ta kryejnë këtë detyrë shumë më shpejt.
Shembulli 2. Kërkoni në tekst fjalën "web".
|
Prej kohësh kam dashur të kuptoj shprehjet e rregullta. Edhe pse "kuptojeni" është një fjalë e fortë. Për të zotëruar artin e madh për t'u bërë mjeshtër i shprehjeve të rregullta, duhet të punoni vazhdimisht me ta. Nuk mjafton të mësosh sintaksën, karakteret speciale dhe modifikuesit - duhet të jesh në gjendje t'i përdorësh ato. Dhe aftësia për të përdorur vjen me përvojë.
Në këtë postim do të postoj shembuj të përdorimit të shprehjeve të rregullta, punën e të cilave unë vetë e kam kuptuar.
Tabela e personazheve të veçanta
Karakter i veçantë | Përshkrim |
---|---|
\ | Simboli i arratisjes. Shembull: '/seo\/smo/'- përputhet me linjën që përmban seo/smo. |
^ | Fillimi i simbolit të të dhënave. Shembull: '/^ SEO/'— përputhet me një rresht që fillon me fjalën seo. |
$ | Simboli i fundit të të dhënave. Shembull: '/blog$/'— përputhet me një rresht që përfundon me fjalën blog. |
. | Çdo karakter përveç furnizimit të linjës. Shembull: '/seo.ult/'- përputhet me vargun seopult, seo9ult, seo@ult, etj. |
Brenda këtyre kllapave janë renditur karakteret, secili prej të cilëve mund të shfaqet në një vend të caktuar, por vetëm një. Shembull: '/seult/'— do të përputhen vetëm linjat që përmbajnë seopult, seokult ose seomult. | |
| | Ose. Shembull më poshtë. |
() | Nënmaskë. |
? | Një ose zero dukuri të karakterit ose nënmodelit të mëparshëm. |
* | Çdo numër dukurish të karakterit ose nënmodelit të mëparshëm. Duke përfshirë zero. |
+ | Një ose më shumë dukuri. |
Shembull: '/se+(op|om)?.*t/'- shkronja s, pastaj një ose më shumë shkronja e, pas së cilës kombinimi op ose om mund të shfaqet një herë, ose ndoshta jo një herë, pastaj çdo numër i ndonjë simboli dhe shkronja t. | |
(a,b) | Numri i dukurive të karakterit ose nënmodelit paraardhës nga a në b. Shembull: (0,) - njësoj si *, (0,1) - njësoj si ?, (3,5) - 3, 4 ose 5 përsëritje. |
Shembuj të thjeshtë të skripteve PHP duke përdorur shprehje të rregullta:
1) Shprehjet e mëparshme dhe të mëvonshme.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // gjeni një fjalë në të cilën ing vjen pas Box. Nëse gjendet fjala, funksioni do të kthehet true, nëse jo, false.$pattern1 = "/Box(?=ing)/" ; preg_match ($pattern1, "Box Day"); // false preg_match ($pattern1, "Boxing Day" ); // e vërtetë // gjeni një fjalë që nuk ka ing pas kutisë. Nëse gjendet fjala, funksioni do të kthehet true, nëse jo, false.$pattern2 = "/box(?!ing)/" ; preg_match ($pattern2, "Kutia për iPhone dhe iPad"); // preg_match i vërtetë ($pattern2, "Çfarë është dita e boksit?") ; // false preg_match ($pattern2, "css-moz-box-shadow" ); // e vërtetë // gjeni një fjalë ku ing nuk paraprihet nga kutia. Nëse gjendet fjala, funksioni do të kthehet true, nëse jo, false.$pattern3 = "/(? |
."; $text=preg_replace("~[^<]+?~","seo blog",$text); echo $text; ?>
3) Merrni dhe shfaqni vlerën Alexa Rank të një faqeje të caktuar.
1 2 3 4 5 6 7 8 9 | "# (.*?) #si", file_get_contents ( "http://www.alexa.com/siteinfo/($url)") , $a ) ; kthye trim (str_replace ("," , "" , strip_tags ($a [ 1 ] ) ) ; ) $alexa = alexa($url) ; jehonë $alexa ; ?> |
.+?">(.*?)
4) Merrni dhe shfaqni titullin e faqes.
1 2 3 4 5 | (.*)<\/title>/s" , $str , $m ) ; echo $m [ 1 ] ; ?> |
(.*)<\/title>/s", $str, $m); jehonë $m; ?>
]*href=(?:"|\")(.*)(?:"|\")[^<>]*>(.*)<\/a>/iU", $content, $links); // mbledh lidhjet nëse (sizeof($links) > 0) // nëse gjenden lidhje ( $out = array(); // grup lidhjesh të jashtme për të ($links si $v ) (nëse (preg_match("/http:\/\/(www\.)(0,1)".$domain."/i", $v)) // zhduk lidhjet e brendshme ( vazhdo; ) if (preg_match ("/(http:|https:)?\/\/(www\.)(0,1)(..com/"); $getoutlinks = getoutlinks($content, $domain); për ( $i = 0;$i<= count($getoutlinks); $i++)
{
echo $getoutlinks[$i]."
";
}
?>
Ku:
preg_zëvendësoj— Kryen kërkimin dhe zëvendësimin duke përdorur një shprehje të rregullt.
preg_ndeshja— kryen një kontroll ndaj një shprehjeje të rregullt.
preg_ndesh_të gjitha— gjen të gjitha ndeshjet, ndërsa preg_match gjen vetëm të parën.
file_get_contents— merrni përmbajtjen e skedarit si një rresht.
shkurtoj— heq hapësirat në fillim dhe në fund të një rreshti.
str_zëvendësoj— zëvendëson vargun e kërkimit me një varg zëvendësues.
strip_tags— heq etiketat html dhe php nga një varg.
madhësia e— merr numrin e elementeve në ndryshore.
numëroj— numëron numrin e elementeve të grupit ose numrin e vetive të objektit.