Syntax för reguljära uttryck

När PHP-tolken bearbetar en fil letar den efter taggar, som anger var PHP-koden börjar och slutar. Allt utanför ett par start- och sluttaggar kommer att ignoreras av tolken (dvs. kommer helt enkelt att ges till webbservern som den är). Till exempel har filen som skickas till PHP-tolken följande kod:

Detta kommer att ignoreras av tolken och kommer helt enkelt att ges som det är, först till webbservern, som i sin tur ger till webbläsaren.

Även detta kommer att ignoreras av tolken och kommer helt enkelt att skickas till webbservern som den är.

Om filen endast innehåller PHP-kod eller om den ligger i slutet av filen, det vill säga det finns inget efter den, så är den avslutande taggen helst utelämnad (ej specificerad). Detta hjälper till att undvika att lägga till slumpmässiga blanksteg efter PHP-sluttaggen, vilket kan orsaka oönskade effekter.

PHP tillåter också en kort öppningstagg

Blanktecken

I PHP-kod kan du använda blanksteg: mellanslag, tabbar och radbrytningar. Antalet blanksteg är inte begränsat och beror på programmerarens preferenser, vars huvudmål är att skapa en tydlig och lättläst programtext (källkod).

Exemplet nedan visar PHP-kod som använder blanksteg:

Exempelkoden kunde ha skrivits på en enda rad utan att använda blanksteg, men sådan kod skulle vara mindre läsbar:

Senaste uppdatering den 27 november 2019 07:10:59 (UTC/GMT +8 timmar)

PHP öppning och stängning Tags syntax

Det finns fyra olika par av öppnings- och stängningstaggar som kan användas i php. Här är listan med taggar.

  • standardsyntax
  • korta öppna Taggar
  • Utelämna PHP-sluttaggen i slutet av filen

Standardsyntax

Standardsyntaxen börjar med "".

Exempel:

korta öppna Taggar

De korta taggarna börjar med "". Korta stiltaggar är endast tillgängliga när de är aktiverade i php.ini-konfigurationsfilen på servrar.

Exempel:

Utelämna PHP-sluttaggen i slutet av filen

Det rekommenderas att en avslutande PHP-tagg utelämnas i en fil som endast innehåller PHP-kod så att förekomster av oavsiktliga blanksteg eller nya rader som läggs till efter PHP-sluttaggen, vilket kan starta outputbuffring och orsaka ouppropade effekter kan undvikas.

Exempel:

Separation av PHP-uttalanden

I PHP avslutas satser med semikolon (;) som C eller Perl. Den avslutande taggen för ett block med PHP-kod innebär automatiskt ett semikolon, det finns inget behov av att ha ett semikolon som avslutar den sista raden i ett PHP-block.

Regler för uttalandeseparering

  • ett semikolon
  • OCH/ELLER
  • en avslutande PHP-tagg

Giltiga koder

I exemplet ovan finns både semikolon(;) och en avslutande PHP-tagg.

I exemplet ovan finns det inget semikolon(;) efter den sista instruktionen men en avslutande PHP-tagg finns.

I exemplet ovan finns det ett semikolon(;) i den sista instruktionen men det finns ingen avslutande PHP-tagg.

PHP skiftlägeskänslighet

I PHP är användardefinierade funktioner, klasser, nyckelord för kärnspråk (till exempel if, else, while, echo etc.) skiftlägesokänsliga. Därför är de tre ekosatserna i följande exempel lika.

exempel-1

"); ECHO("Vi lär oss PHP-skiftlägeskänslighet
"); EchHo("Vi lär oss PHP skiftlägeskänslighet
"); ?>

Vi lär oss PHP skiftlägeskänslighet Vi lär oss PHP skiftlägeskänslighet

Å andra sidan är alla variabler skiftlägeskänsliga.

Betrakta följande exempel. Endast det första påståendet visar värdet som $amount eftersom $amount, $AMOUNT, $amoUNT är tre olika variabler.

exempel-2

"); echo("Beloppet är: $AMOUNT
"); echo("Beloppet är: $amoUNT
"); ?>

Beloppet är: 200 Beloppet är: Beloppet är:

PHP blanksteg okänslighet

I allmänhet är blanksteg inte synligt på skärmen, inklusive mellanslag, flikar och radsluttecken, dvs. vagnretur. I PHP spelar blanksteg ingen roll i kodning. Du kan bryta en enradssats till valfritt antal rader eller antal separata satser tillsammans på en enda rad.

Följande två exempel är desamma:

Exempel:

"; echo "Hans klass är: $class och Roll No. är $roll_no"; ) student_info("David Rayy", "V", 12) ?>

Exempel: Avancerad okänslighet för blanksteg

"; echo "Hans klass är: $class och Roll No. är $roll_no"; ) student_info("David Rayy", "V", 12) ?>

Elevens namn är: David Rayy. Hans klass är: V and Roll No. är 12

Exempel: okänslighet för blanksteg med tabbar och mellanslag

I följande exempel används mellanslag och tabbar i en numerisk operation, men i båda fallen returnerar $xyz samma värde.

"; // tabbar och mellanslag $xyz = 11 + 12; echo $xyz; ?>

PHP: En rad och flera rader Kommentarer

en rad kommentar

PHP stöder följande två olika sätt att kommentera.

# Det här är en kommentar på en rad.

//Detta är ett annat sätt att kommentera en rad.

Exempel:

kommentarer på flera rader

PHP stöder "C", stilkommentarer. En kommentar börjar med teckenparet /* och slutar med teckenparet */.

/* Detta är ett test med flera kommentarer,
och dessa rader kommer att ignoreras
vid tidpunkten för utförande */

Exempel:

Kommentarer med flera rader kan inte kapslas

Första PHP-skriptet

Här är det första PHP-skriptet som kommer att visa "Hello World..." i webbläsaren.

<?php echo "Hello World..."; ?>

Taggarna säger åt webbservern att behandla allt inuti taggarna som PHP-kod som ska köras. Koden är väldigt enkel. Den använder en inbyggd PHP-funktion "eko" för att visa texten "Hello World ..." på webbsidan. Allt utanför dessa taggar skickas direkt till webbläsaren.

bildpresentation


Kombinera PHP och HTML

PHP-syntax är endast tillämplig inom PHP-taggar.

PHP kan bäddas in i HTML och placeras var som helst i dokumentet.

När PHP är inbäddat i HTML-dokument och PHP analyserar detta dokument tolkas det avsnittet som omges av en öppningstagg () av PHP och ignorera resten av dokumentet.

PHP och HTML ses tillsammans i följande exempel.

PHP sida

träna här online:

Reguljära uttryck är ett mycket användbart verktyg för utvecklare. Med deras hjälp kan du hitta, definiera eller ersätta text, ord eller andra tecken. Dagens artikel innehåller 15 av de mest användbara reguljära uttrycken som alla webbutvecklare behöver.

Introduktion till reguljära uttryck

Många nybörjare tycker att reguljära uttryck är mycket svåra att förstå och använda. Faktum är att allt inte är så svårt som det kan verka. Innan vi hoppar direkt in i reguljära uttryck, med deras användbara och mångsidiga kod, låt oss ta en titt på grunderna:

Syntax för reguljära uttryck

Vanligt uttryck Betyder att
foo Strängen "foo"
^foo Strängen börjar med "foo"
foo$ Strängen slutar med "foo"
^foo$ "foo" förekommer bara en gång i rad
a, b eller c
alla gemener
[^A-Z] alla tecken som inte är i versaler
(gif|jpg) Betyder både "gif" och "jpeg"
+ Ett eller flera gemener
Valfritt tal, punkt eller minustecken
^{1,}$ Vilket ord som helst, minst en bokstav, siffra eller _
()() wy, wz, xy eller xz
(^A-Za-z0-9) Vilket tecken som helst (inte en siffra eller bokstav)
({3}|{4}) Betyder tre bokstäver eller fyra siffror

PHP-funktioner för reguljära uttryck

Fungera Beskrivning
preg_match() Funktionen preg_match() söker efter en sträng enligt ett givet mönster, returnerar true om strängen hittas och i annat fall false
preg_match_all() Funktionen preg_match_all() hittar alla förekomster av en sträng som ges av ett mönster
preg_replace() Funktionen preg_replace() fungerar på samma sätt som ereg_replace(), förutom att reguljära uttryck kan användas både för att ange sökmönstret och strängen att ersätta det hittade värdet med.
preg_split() Funktionen preg_split() är samma som split(), förutom att ett reguljärt uttryck kan användas som en parameter för ett sökmönster.
preg_grep() Funktionen preg_grep() söker igenom alla element i inmatningsmatrisen och returnerar alla element som matchar det reguljära uttrycksmönstret.
preg_quote() Undviker tecken i reguljära uttryck

Verifiering av domännamn

Kontrollera om en sträng är ett giltigt domännamn

$url = "http://kommunitasweb.com/"; if (preg_match("/^(http|https|ftp)://(*(?:.*)+):?(d+)?/?/i", $url)) ( echo "Din webbadress är okej ."; ) else ( echo "Fel url."; )

Ordmarkering i text

Detta är ett mycket användbart reguljärt uttryck, du kan använda det för att hitta rätt ord och markera det. Särskilt användbart för att visa sökresultat.

$text = "Exempelsats från KomunitasWeb, regex har blivit populärt inom webbprogrammering. Nu lär vi oss regex. Enligt wikipedia skrivs reguljära uttryck (förkortade som regex eller regexp, med pluralformer regex, regexps eller regexen) i en formell språk som kan tolkas av en processor för reguljära uttryck"; $text = preg_replace("/b(regex)b/i", " 1", $text); echo $text;

Markera sökresultat i en WordPress-blogg

Som nämnts i föregående exempel är detta kodexempel användbart i sökresultaten och det finns ett utmärkt sätt att implementera denna funktion i en wordpress-blogg.

Öppna din search.php-fil och hitta funktionen_title(). Ersätt den med följande kod:

echo $title;

Nu, ovanför den här raden, lägg till denna kod:

\0", $title); ?>

Spara filen search.php och öppna style.css. Lägg till följande rad:

Strong.search-excerpt ( bakgrund: gul; )

Hämta alla bilder från ett HTML-dokument

Om du någonsin behövt få alla bilder från en webbsida bör den här koden vara att du enkelt kan skapa en bildladdare med hjälp av cURL-funktioner

$image = array(); preg_match_all("/(img|src)=("|\")[^"\">]+/i", $data, $media); unset($data); $data = preg_replace("/(img|src)("|\"|="|=\")(.*)/i", "$3", $media); foreach ($data som $url) ( $info = pathinfo($url); if (isset($info["extension"])) ( if (($info["extension"] == "jpg") || ($info["extension"] == "jpeg") || ($info["extension"] == "gif") || ($info["extension"] == "png")) array_push($ bilder, $url); ) )

Ta bort dubbletter av ord (inte skiftlägeskänsliga)

Upprepar du ofta ord medan du skriver? Detta reguljära uttryck kommer att hjälpa.

$text = preg_replace("/s(w+s)1/i", "$1", $text);

Ta bort upprepade skiljetecken

Samma sak, bara för skiljetecken. Säg adjö till dubbla kommatecken.

$text = preg_replace("/.+/i", ".", $text);

Sök efter XML/HTML-taggar

Denna enkla funktion tar två argument. Den första är taggen du behöver hitta, och den andra är variabeln som innehåller XML eller HTML. Återigen är den här funktionen väldigt bekväm att använda med cURL.

Funktion get_tag($tag, $xml) ( $tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?).")", $xml, $matches, PREG_PATTERN_ORDER); returnera $matches; )

Sök efter XHTML/XML-taggar med ett specifikt attributvärde

Denna funktion är mycket lik den föregående, förutom att du kan ställa in önskat attribut till taggen. Till exempel kan du enkelt hitta

.

Funktion get_tag($attr, $value, $xml, $tag=null) (if(is_null($tag)) $tag = "\w+"; annars $tag = preg_quote($tag); $attr = preg_quote($ attr); $value = preg_quote($value); $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(["\"])$värde\\2[^>]*>(.*?)<\/\\1>/" preg_match_all($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); return $matches; )

Hitta hexadecimala färgvärden

Ytterligare ett användbart verktyg för en webbutvecklare! Det låter dig hitta/kontrollera det hexadecimala värdet för en färg.

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "exempel 6 framgångsrikt."; )

Sök efter artikeltitel

Denna kodbit kommer att hitta och visa texten inuti taggarna , på html-sidan.

$fp = fopen("http://www.catswhocode.com/blog","r"); while (!feof($fp))( $page .= fgets($fp, 4096); ) $titre = eregi(" (.*)",$page,$regs); echo $regs; fclose($fp);

Apache-logganalys

De flesta webbplatser körs på den välkända Apache-webbservern. Om din webbplats är en av dem, varför inte använda PHP och reguljära uttryck för att analysera Apache-loggar?

//Loggar: Apache webbserver //Lyckade träffar endast till HTML-filer. Användbart för att räkna antalet sidvisningar. "^((?#klient-IP eller domännamn)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+"(?: GET|POST|HEAD) ((?#file)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/+"s+(?#statuskod)200s+((?#bytes överförda)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent )[^"]*)"$" //Loggar: Apache-webbserver //404-fel endast "^((?#klient-IP eller domännamn)S+)s+((?#basic authentication)S+s+S+) s+[((?#datum och tid)[^]]+)]s+"(?:GET|POST|HEAD) ((?#fil)[^ ?"]+)??((?#parameters)[ ^?"]+)? HTTP/+"s+(?#statuskod)404s+((?#bytes överförda)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent )[^"]*)"$"

Ersätt dubbla citattecken med smarta citattecken

Om du är en typografiälskare kommer du att älska detta reguljära uttryck som ersätter vanliga dubbla citattecken med smarta citattecken. Ett liknande reguljärt uttryck används i wordpress i sidinnehåll.

Preg_replace("B"b([^"x84x93x94rn]+)b"B", "?1?", $text);

Omfattande lösenordskontroll

Detta reguljära uttryck säkerställer att minst sex tecken, siffror, bindestreck och understreck skrivs in i textfältet.

Textfältet måste innehålla minst en versal, en gemen och en siffra.

"A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?) [-_a-zA-Z0-9](6,)z"

WordPress: Använda ett reguljärt uttryck för att få bilder från ett inlägg

Eftersom många av er är WordPress-användare kan det vara användbart att ha en kod som gör att du kan hämta alla bilder från texten i en artikel och mata ut dem.

För att använda den här koden klistrar du bara in den i valfri fil i ditt tema.

post_content; $szSearchPattern = "~ ]* />~"; // Kör preg_match_all för att ta alla bilder och spara resultaten i $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics); // Kontrollera om vi har minst 1 bild $iNumberOfPics = count($aPics); if ($iNumberOfPics > 0) ( // Nu här skulle du göra vad du än behöver göra med bilderna // I det här exemplet visas bilderna bara för ($i=0; $i< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>

Generering av automatiska uttryckssymboler

En annan funktion som används i wordpress är att den låter dig automatiskt ersätta smileysymboler med en smileybild.

$texte="En text med en smiley:-)"; echo str_replace(":-)"," ",$text);

JavaScript är blockerat i din webbläsare. Tillåt JavaScript för att den här webbplatsen ska fungera!

strip_tags

(PHP 3 >= 3.0.8, PHP 4, PHP 5)

strip_tags- Tar bort HTML- och PHP-taggar från en sträng

Beskrivning

sträng strip_tags(sträng str[, sträng tillåtna_taggar])

Den här funktionen returnerar strängen str med HTML- och PHP-taggarna borttagna. För att ta bort taggar används en automat, liknande den som används i funktionen fgetss().

Det valfria andra argumentet kan användas för att ange taggar som inte ska tas bort.

Kommentar: Argumentet allowable_tags lades till i PHP 3.0.13 och PHP 4.0b3. Från och med PHP 4.3.0 tas även HTML-kommentarer bort.

Uppmärksamhet

Därför att strip_tags() inte kontrollerar HTML-kodens korrekthet, kan oavslutade taggar leda till att text som inte ingår i taggarna tas bort.

Exempel 1: Användningsexempel strip_tags()
$text = "

Paragraf.

Lite mer text"; echo strip_tags($text); echo "\n\n-------\n"; // radera inte

echo strip_tags($text, "

"); // Tillåt ,,echo strip_tags($text, " ");

Detta exempel kommer att mata ut:

Paragraf. Lite mer text -------

Paragraf.

Lite mer text

Uppmärksamhet

Den här funktionen ändrar inte attributen för taggarna som anges i argumentet allowable_tags, inklusive stil och onmouseover.

Sedan PHP 5.0.0 strip_tags() säkert att hantera data i binär form.

Denna funktion har en betydande nackdel - det är limningen av ord när du tar bort taggar. Dessutom har funktionen sårbarheter. Alternativ funktion som liknar strip_tags:

c" * - "smutsig" html är korrekt bearbetad när tecken kan hittas i taggattributvärden< >* - trasig html bearbetas korrekt * - kommentarer, skript, stilar, PHP, Perl, ASP-kod, MS Word-taggar, CDATA klipps ut * - text formateras automatiskt om den innehåller html-kod * - skydd mot förfalskningar som: "<script>alert("hej") script>" * * @param sträng $s * @param array $allowable_tags Array av taggar som inte kommer att tas bort * Exempel: "b" -- taggen kommer att finnas kvar med attribut, " " -- taggen kommer att förbli utan attribut * @param bool $is_format_spaces Formatera mellanslag och radbrytningar? * Mata ut textens utseende (vanligt) så nära textens utseende som möjligt i webbläsarens indata. * Med andra ord, det är korrekt konverterar text/html till text/plain. * Text formateras endast om några taggar har tagits bort * @param array $pair_tags array av partaggnamn som ska tas bort tillsammans med innehållet * se standardvärden * @param array $para_tags array av partaggnamn, som kommer att behandlas som stycken (om $is_format_spaces = true) * se standardvärden* @return string * * @license http://creativecommons.org/licenses/by-sa/3.0/ * @författare Nasibullin Rinat, http: //orangetie.ru/ * @charset ANSI * @version 4.0.14 */ function strip_tags_smart(/*string*/ $s, array $allowable_tags = null, /*boolean*/ $is_format_spaces = true, array $pair_tags = array ("skript", "stil", "karta", "iframe", "frameset", "objekt", "applet", "co mment", "button", "textarea", "select"), array $para_tags = array("p", "td", "th", "li", "h1", "h2", "h3", "h4", "h5", "h6", "div", "form", "titel", "pre")) ( //return strip_tags($s); statisk $_callback_type = false; statiska $_allowable_tags = array(); statiska $_para_tags = array(); #reguljärt uttryck för taggattribut #korrekta processer smutsig och trasig HTML i en enkelbyte eller multibyte UTF-8-teckenuppsättning! statisk $re_attrs_fast_safe = "(?!) #påstående, som följer efter en tagg #korrekta attribut (?> [^>"\"]+ | (?<=[\=\x20\r\n\t]|\xc2\xa0) "[^"]*" | (?<=[\=\x20\r\n\t]|\xc2\xa0) \"[^\"]*\")* #incorrect attributes [^>]*+"; if (is_array($s)) ( if ($_callback_type === "strip_tags") ( $tag = strtolower($s); if ($_allowable_tags) ( #tagg med attribut if (array_key_exists($ tag, $_allowable_tags)) returnerar $s; #tag utan attribut om (array_key_exists("<" . $tag . ">", $_allowable_tags)) ( if (substr($s, 0, 2) === ""; if (substr($s, -2) === "/>") returnera "<" . $tag . " />";lämna tillbaka"<" . $tag . ">"; ) ) if ($tag === "br") returnera "\r\n"; if ($_para_tags && array_key_exists($tag, $_para_tags)) returnera "\r\n\r\n"; returnera ""; ) trigger_error("Okänd återuppringningstyp "" . $_callback_type . ""!", E_USER_ERROR); ) if (($pos = strpos($s, "<")) === false || strpos($s, ">", $pos) === falskt) #hastighet förbättras ( #taggar hittas inte returnerar $s; ) $length = strlen($s); #unpaired taggar (öppning, stängning, !DOCTYPE, MS Word namnutrymme) $re_tags = "~:*+)?) #1 " . $re_attrs_fast_safe . " > ~sxSX"; $patterns = array("/<([\?\%]) .*? \\1>/sxSX", #embedded PHP, Perl, ASP-kod "/<\!\\]>/sxSX", #CDATA block #"/<\!\[ [\x20\r\n\t]* .*? \]>/sxSX", #:UTTAGAD: MS Word-typtaggar... "/<\!--.*?-->/sSX", #kommentarer #MS Word-taggar som "...", #villkorlig kodexekvering för IE-typ " HTML " #villkorlig kodexekvering för IE-typ "HTML" #se http://www.tigir.com/comments.htm "/<\! (?:--)?+ \[ (?>[^\]"\"]+ | "[^"]*" | \"[^\"]*\")* \] (?:--)?+ > /sxSX",); if ($pair_tags) ( #parade taggar med innehåll: foreach ($pair_tags som $k => $v) $pair_tags[$k] = preg_quote($v, "/"); $patterns = "/<((?i:" . implode("|", $pair_tags) . "))" . $re_attrs_fast_safe . "(? .*? <\/(?i:\\1)" . $re_attrs_fast_safe . ">/sxSX"; ) #d($patterns); $i = 0; #loopskydd $max = 99; while ($i< $max) { $s2 = preg_replace($patterns, "", $s); if (preg_last_error() !== PREG_NO_ERROR) { $i = 999; break; } if ($i == 0) { $is_html = ($s2 != $s || preg_match($re_tags, $s2)); if (preg_last_error() !== PREG_NO_ERROR) { $i = 999; break; } if ($is_html) { if ($is_format_spaces) { /* В библиотеке PCRE для PHP \s - это любой пробельный символ, а именно класс символов [\x09\x0a\x0c\x0d\x20\xa0] или, по другому, [\t\n\f\r \xa0] Если \s используется с модификатором /u, то \s трактуется как [\x09\x0a\x0c\x0d\x20] Браузер не делает различия между пробельными символами, друг за другом подряд идущие символы воспринимаются как один */ #$s2 = str_replace(array("\r", "\n", "\t"), " ", $s2); #$s2 = strtr($s2, "\x09\x0a\x0c\x0d", " "); $s2 = preg_replace("/ [\x09\x0a\x0c\x0d]++ | <((?i:pre|textarea))" . $re_attrs_fast_safe . "(? .+? <\/(?i:\\1)" . $re_attrs_fast_safe . ">\K /sxSX", " ", $s2); if (preg_last_error() !== PREG_NO_ERROR) ( $i = 999; break; ) ) #en array av taggar som inte tas bort om ($allowable_tags) $_allowable_tags = array_flip ($allowable_tags); #pair-taggar som kommer att behandlas som stycken if ($para_tags) $_para_tags = array_flip($para_tags); ) )#if #tags processing if ($is_html) ( $_callback_type = "strip_tags"; $s2 = preg_replace_callback($re_tags, __FUNCTION__, $s2); $_callback_type = false; if (preg_last_error() !== PREG_NO_ERROR) ( $i = 999; break; ) ) if ($s === $s2) break ; $ s = $s2; $i++; )#while if ($i >= $max) $s = strip_tags($s); #too many cycles for replace... if ($is_format_spaces && strlen($s) != = $length) ( #remove a duplicate spaces $s = preg_replace("/\x20\x20++/sSX", " ", trim($s)); #remove a space before and after new lines $s = str_replace (array ("\r\n\x20", "\x20\r\n"), "\r\n", $s); #ersätt 3 och fler nya rader till 2 nya rader $s = preg_replace(" /[ \r\n](3,)+/sSX", "\ r\n\r\n", $s); ) returnera $s; ) ?>

Se även funktionsbeskrivning