Синтаксис на регулярен израз

Когато PHP интерпретаторът обработва файл, той търси тагове, които показват къде започва и завършва PHP кодът. Всичко извън чифт начални и крайни тагове ще бъде игнорирано от интерпретатора (т.е. просто ще бъде предоставено на уеб сървъра така, както е). Например, файлът, предаден на PHP интерпретатора, има следния код:

Това ще бъде игнорирано от интерпретатора и просто ще бъде дадено както е, първо на уеб сървъра, който от своя страна ще даде на браузъра.

Това също ще бъде игнорирано от интерпретатора и просто ще бъде предадено на уеб сървъра така, както е.

Ако файлът съдържа само PHP код или се намира в самия край на файла, т.е. няма нищо след него, тогава затварящият таг е за предпочитане да бъде пропуснат (не е посочен). Това помага да се избегне добавянето на произволни празни знаци след PHP крайния таг, което може да причини нежелани ефекти.

PHP също позволява кратък отварящ таг

Празни знаци

В PHP код можете да използвате празни знаци: интервали, раздели и нови редове. Броят на интервалите не е ограничен и зависи от предпочитанията на програмиста, чиято основна цел е да създаде ясен и лесен за четене програмен текст (изходен код).

Примерът по-долу показва PHP код, който използва празни знаци:

Примерният код би могъл да бъде написан на един ред без използване на празни знаци, но такъв код би бил по-малко четим:

Последна актуализация на 27 ноември 2019 г. 07:10:59 (UTC/GMT +8 часа)

Синтаксис на PHP отварящи и затварящи тагове

Има четири различни двойки отварящи и затварящи тагове, които могат да се използват в php. Ето списъка с етикети.

  • синтаксис по подразбиране
  • кратки отворени етикети
  • Пропуснете PHP затварящия таг в края на файла

Синтаксис по подразбиране

Синтаксисът по подразбиране започва с "".

Пример:

кратки отворени етикети

Кратките етикети започват с "". Кратките стилови тагове са налични само когато са активирани в конфигурационния файл php.ini на сървърите.

Пример:

Пропуснете PHP затварящия таг в края на файла

Препоръчва се затварящ PHP таг да бъде пропуснат във файл, съдържащ само PHP код, така че да се избегнат случайни празни интервали или нови редове, добавени след PHP затварящия таг, което може да започне буфериране на изхода, причинявайки нежелани ефекти.

Пример:

Разделяне на PHP изрази

В PHP изразите се завършват с точка и запетая (;) като C или Perl. Затварящият таг на блок от PHP код автоматично предполага точка и запетая, няма нужда да има точка и запетая, завършваща последния ред на PHP блок.

Правила за разделяне на изявленията

  • точка и запетая
  • И/ИЛИ
  • затварящ PHP таг

Валидни кодове

В горния пример присъстват точка и запетая(;) и затварящ PHP таг.

В горния пример няма точка и запетая(;) след последната инструкция, но присъства затварящ PHP таг.

В горния пример има точка и запетая(;) в последната инструкция, но няма затварящ PHP таг.

Чувствителност към главни и малки букви на PHP

В PHP дефинираните от потребителя функции, класове, основни езикови ключови думи (например if, else, while, echo и т.н.) са нечувствителни към малки и големи букви. Следователно трите ехо оператора в следващия пример са равни.

пример-1

"); ECHO("Учим чувствителността към малки и главни букви в PHP
"); EcHo("Учим чувствителността към главни и малки букви на PHP
"); ?>

Учим чувствителността към малки и главни букви в PHP Учим чувствителността към малки и главни букви в PHP

От друга страна, всички променливи са чувствителни към малки и малки букви.

Помислете за следния пример. Само първият израз показва стойността като $amount, защото $amount, $AMOUNT, $amoUNT са три различни променливи.

пример-2

"); echo("Сумата е: $AMOUNT
"); echo("Сумата е: $amoUNT
"); ?>

Сумата е: 200 Сумата е: Сумата е:

Нечувствителност към интервали в PHP

По принцип празното пространство не се вижда на екрана, включително интервали, табулатори и знаци в края на реда, т.е. връщане на карета. В PHP празното пространство няма значение при кодирането.Можете да разделите израз на един ред на произволен брой редове или брой отделни изрази заедно на един ред.

Следните два примера са еднакви:

Пример:

"; echo "Неговият клас е: $class и Roll No. е $roll_no"; ) student_info("David Rayy", "V", 12) ?>

Пример: Разширена нечувствителност към интервали

"; echo "Неговият клас е: $class и Roll No. е $roll_no"; ) student_info("David Rayy", "V", 12) ?>

Името на ученика е: Дейвид Рей Неговият клас е: V и номер на свитък. е 12

Пример: Нечувствителност към бели интервали с раздели и интервали

В следващия пример интервалите и разделите се използват в числова операция, но и в двата случая $xyz връща същата стойност.

"; // раздели и интервали $xyz = 11 + 12; echo $xyz; ?>

PHP: Коментари с един ред и няколко реда

коментар на един ред

PHP поддържа следните два различни начина за коментиране.

# Това е коментар от един ред.

//Това е друг начин за едноредов коментар.

Пример:

многоредови коментари

PHP поддържа коментари в стил "C". Коментарът започва с двойката знаци /* и завършва с двойката знаци */.

/* Това е тест с множество коментари,
и тези редове ще бъдат игнорирани
в момента на изпълнение */

Пример:

Коментарите с няколко реда не могат да бъдат вложени

Първи PHP скрипт

Ето първия PHP скрипт, който ще покаже "Hello World..." в уеб браузъра.

<?php echo "Здравей свят..."; ?>

Етикетите казват на уеб сървъра да третира всичко вътре в таговете като PHP код за изпълнение. Кодът е много прост. Той използва вградена PHP функция "echo", за да покаже текста "Hello World ..." в уеб страницата. Всичко извън тези тагове се изпраща директно към браузъра.

картинно представяне


Комбиниране на PHP и HTML

PHP синтаксисът е приложим само в PHP тагове.

PHP може да бъде вграден в HTML и поставен навсякъде в документа.

Когато PHP е вграден в HTML документи и PHP анализира този документ, се интерпретира секцията, оградена с отварящ таг () на PHP и игнорирайте останалата част от документа.

PHP и HTML се виждат заедно в следния пример.

PHP страница

практикувайте тук онлайн:

Регулярните изрази са много полезен инструмент за разработчиците. С тяхна помощ можете да намерите, дефинирате или замените текст, думи или други знаци. Днешната статия съдържа 15 от най-полезните регулярни изрази, от които всеки уеб разработчик ще се нуждае.

Въведение в регулярните изрази

Много начинаещи разработчици намират регулярните изрази за много трудни за разбиране и използване. Всъщност всичко не е толкова трудно, колкото може да изглежда. Преди да преминем директно към регулярните изрази с техния полезен и многофункционален код, нека да разгледаме основите:

Синтаксис на регулярен израз

Редовен израз Средства
Фу Низът "foo"
^фу Низът започва с "foo"
foo$ Низът завършва с "foo"
^foo$ "foo" се среща само веднъж в ред
a, b или c
всяка малка буква
[^A-Z] всеки знак, който не е в главни букви
(gif|jpg) Означава едновременно „gif“ и „jpeg“
+ Един или повече малки букви
Произволно число, точка или знак минус
^{1,}$ Всяка дума, поне една буква, цифра или _
()() wy, wz, xy или xz
(^A-Za-z0-9) Всеки знак (не цифра или буква)
({3}|{4}) Означава три букви или 4 цифри

PHP функции за регулярни изрази

функция Описание
preg_match() Функцията preg_match() търси низ според даден модел, връща true, ако низът е намерен, и false в противен случай
preg_match_all() Функцията preg_match_all() намира всички срещания на низ, даден от шаблон
preg_replace() Функцията preg_replace() работи по същия начин като ereg_replace(), с изключение на това, че регулярните изрази могат да се използват както за указване на шаблона за търсене, така и на низа, с който да се замени намерената стойност.
preg_split() Функцията preg_split() е същата като split(), с изключение на това, че регулярен израз може да се използва като параметър за модел на търсене.
preg_grep() Функцията preg_grep() търси във всички елементи на входния масив, като връща всички елементи, които съответстват на модела на регулярен израз.
preg_quote() Избягва символите на регулярния израз

Проверка на име на домейн

Проверка дали даден низ е валидно име на домейн

$url = "http://komunitasweb.com/"; if (preg_match("/^(http|https|ftp)://(*(?:.*)+):?(d+)?/?/i", $url)) ( echo "Вашият URL адрес е ок ."; ) else ( echo "Грешен url."; )

Маркиране на думи в текста

Това е много полезен регулярен израз, можете да го използвате, за да намерите точната дума и да я маркирате. Особено полезно за показване на резултати от търсене.

$text = "Примерно изречение от KomunitasWeb, регулярният израз стана популярен в уеб програмирането. Сега научаваме регулярен израз. Според wikipedia регулярните изрази (съкратено като regex или regexp, с форми за множествено число regexes, regexps или regexen) се записват във формален език, който може да се интерпретира от процесор за регулярен израз"; $text = preg_replace("/b(regex)b/i", " 1", $текст); ехо $текст;

Маркиране на резултати от търсене в WordPress блог

Както бе споменато в предишния пример, този примерен код е полезен в резултатите от търсенето и има чудесен начин да внедрите тази функция в блог на wordpress.

Отворете файла search.php и намерете функцията the_title(). Заменете го със следния код:

echo $title;

Сега над този ред добавете този код:

\0", $title); ?>

Запазете файла search.php и отворете style.css. Добавете следния ред:

Strong.search-excerpt ( фон: жълт; )

Получаване на всички изображения от HTML документ

Ако някога ви се наложи да получите всички снимки от уеб страница, този код трябва да бъде, можете лесно да създадете програма за зареждане на изображения, като използвате възможностите на cURL

$ изображение = масив (); preg_match_all("/(img|src)=("|\")[^"\">]+/i", $data, $media); изключване ($ данни); $data = preg_replace("/(img|src)("|\"|="|=\")(.*)/i", "$3", $media); foreach ($data as $url) ( $info = pathinfo($url); if (isset($info["extension"])) ( if (($info["extension"] == "jpg") || ($info["extension"] == "jpeg") || ($info["extension"] == "gif") || ($info["extension"] == "png")) array_push($ изображения, $url); ))

Премахване на дублиращи се думи (без значение за главни и малки букви)

Често ли повтаряте думи, докато пишете? Този регулярен израз ще помогне.

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

Премахване на повтаряща се пунктуация

Същото, само за препинателни знаци. Кажете сбогом на двойните запетаи.

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

Търсене на XML/HTML тагове

Тази проста функция приема два аргумента. Първият е етикетът, който трябва да намерите, а вторият е променливата, съдържаща XML или HTML. Отново, тази функция е много удобна за използване с cURL.

Функция get_tag($tag, $xml) ( $tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?).")", $xml, $съвпадения, PREG_PATTERN_ORDER); върне $ съвпадения; )

Търсете XHTML/XML тагове с конкретна стойност на атрибут

Тази функция е много подобна на предишната, с изключение на това, че можете да зададете желания атрибут на тага. Например, можете лесно да намерите

.

Функция get_tag($attr, $value, $xml, $tag=null) ( if(is_null($tag)) $tag = "\w+"; else $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); върне $matches; )

Намерете шестнадесетични цветови стойности

Още един полезен инструмент за уеб разработчик! Позволява ви да намерите/проверите шестнадесетичната стойност на цвят.

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "пример 6 успешен.";)

Търсене на заглавие на статия

Тази част от кода ще намери и покаже текста вътре в таговете , на html страницата.

$fp = fopen("http://www.catswhocode.com/blog","r"); докато (!feof($fp))( $page .= fgets($fp, 4096); ) $titre = eregi(" (.*)",$page,$regs); ехо $regs; fclose($fp);

Разбор на регистрационен файл на Apache

Повечето сайтове работят на добре познатия уеб сървър Apache. Ако вашият сайт е един от тях, защо не използвате PHP и регулярни изрази за анализиране на регистрационните файлове на Apache?

//Дневници: уеб сървър на Apache //Само успешни посещения на HTML файлове. Полезно за отчитане на броя показвания на страници. "^((?#клиентски IP адрес или име на домейн)S+)s+((?#основно удостоверяване)S+s+S+)s+[((?#дата и час)[^]]+)]s+"(?: GET|POST|HEAD) ((?#file)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/+"s+(?#статус код)200s+((?#прехвърлени байта)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#потребителски агент )[^"]*)"$" //Дневници: уеб сървър на Apache //само 404 грешки "^((?#IP клиент или име на домейн)S+)s+((?#основно удостоверяване)S+s+S+) s+[((?#дата и час)[^]]+)]s+"(?:GET|POST|HEAD) ((?#файл)[^ ?"]+)??((?#параметри)[ ^?"]+)? HTTP/+"s+(?#статус код)404s+((?#прехвърлени байта)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#потребителски агент )[^"]*)"$"

Замяна на двойни кавички с интелигентни кавички

Ако сте любител на типографията, ще ви хареса този регулярен израз, който замества обикновените двойни кавички с интелигентни кавички. Подобен регулярен израз се използва в wordpress в съдържанието на страницата.

Preg_replace("B"b([^"x84x93x94rn]+)b"B", "?1?", $текст);

Пълна проверка на паролата

Този регулярен израз ще гарантира, че най-малко шест знака, цифри, тирета и долни черти са въведени в текстовото поле.

Текстовото поле трябва да съдържа поне една главна буква, една малка буква и едно число.

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

WordPress: Използване на регулярен израз за получаване на изображения от публикация

Тъй като много от вас са потребители на WordPress, може да ви е полезно да имате код, който ви позволява да получите всички изображения от текста на статия и да ги изведете.

За да използвате този код, просто го поставете във всеки файл във вашата тема.

post_content; $szSearchPattern = "~ ]* />~"; // Изпълнете preg_match_all, за да вземете всички изображения и да запазите резултатите в $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics); // Проверете дали имаме поне 1 изображение $iNumberOfPics = count($aPics); if ($iNumberOfPics > 0) ( // Сега тук бихте направили всичко, което трябва да направите с изображенията // За този пример изображенията се показват само за ($i=0; $i< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>

Генериране на автоматични емотикони

Друга функция, използвана в wordpress, е, че ви позволява автоматично да замените символите на усмивка с изображение на усмивка.

$texte="Текст с усмивка:-)"; ехо str_replace(":-)"," ",$текст);

JavaScript е блокиран във вашия браузър. Разрешете JavaScript, за да работи този сайт!

strip_tags

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

strip_tags- Премахва HTML и PHP тагове от низ

Описание

низ strip_tags(низ str[, низ допустими_тагове])

Тази функция връща низа str с премахнати HTML и PHP тагове. За премахване на етикети се използва автомат, подобен на този, използван във функцията fgetss().

Незадължителният втори аргумент може да се използва за указване на тагове, които не трябва да се премахват.

коментар:Аргументът allowable_tags беше добавен в PHP 3.0.13 и PHP 4.0b3. Считано от PHP 4.3.0, HTML коментарите също са премахнати.

внимание

защото strip_tags()не проверява коректността на HTML кода, незавършените тагове могат да доведат до премахване на текст, който не е включен в таговете.

Пример 1: Пример за използване strip_tags()
$текст = "

Параграф.

Още малко текст"; echo strip_tags($text); echo "\n\n-------\n"; // не изтривай

echo strip_tags($текст, "

"); // Позволява ,,echo strip_tags($текст, " ");

Този пример ще изведе:

Параграф. Още малко текст -------

Параграф.

Още малко текст

внимание

Тази функция не променя атрибутите на таговете, посочени в аргумента allowable_tags, включително style и onmouseover.

От PHP 5.0.0 strip_tags()безопасен за работа с данни в двоична форма.

Тази функция има значителен недостатък - това е залепването на думи при изтриване на етикети. Освен това функцията има уязвимости. Алтернативна функция, подобна на strip_tags:

c" * - "мръсният" html се обработва правилно, когато знаците могат да бъдат намерени в стойностите на атрибута на етикета< >* - повреденият html се обработва правилно * - коментари, скриптове, стилове, PHP, Perl, ASP код, MS Word тагове, CDATA се изрязват * - текстът се форматира автоматично, ако съдържа html код * - защита срещу фалшификати като: "<скрипт> предупреждение ("здравей")скрипт>" * * @param низ $s * @param масив $allowable_tags Масив от тагове, които няма да бъдат премахнати * Пример: "b" -- етикетът ще остане с атрибути, " " -- тагът ще остане без атрибути * @param bool $is_format_spaces Форматиране на интервали и прекъсвания на редове? * Извеждане на изходен текст (обикновен) възможно най-близък до външния вид на текста във входа на браузъра. * С други думи, правилно преобразува текст/html в текст/обикновен * Текстът се форматира само ако има отстранени етикети * @param масив $pair_tags масив от имена на двойки тагове, които трябва да бъдат премахнати заедно със съдържанието * вижте стойностите по подразбиране * @param масив $para_tags масив от имена на двойки тагове, които ще се третират като абзаци (ако $is_format_spaces = true) * вижте стойностите по подразбиране * @return string * * @license http://creativecommons.org/licenses/by-sa/3.0/ * @author 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 ("script", "style", "map", "iframe", "frameset", "object", "applet", "co mment", "button", "textarea", "select"), масив $para_tags = array("p", "td", "th", "li", "h1", "h2", "h3", "h4", "h5", "h6", "div", "form", "title", "pre")) ( //връща strip_tags($s); статичен $_callback_type = невярно; статични $_allowable_tags = array(); статични $_para_tags = array(); #регулярен израз за атрибути на тагове #правилно обработва мръсен и повреден HTML в еднобайтов или многобайтов UTF-8 набор от знаци! static $re_attrs_fast_safe = "(?!) #statement, който следва след таг #correct attributes (?> [^>"\"]+ | (?<=[\=\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) ( #tag с атрибути if (array_key_exists($) tag, $_allowable_tags)) връща $s; #tag без атрибути if (array_key_exists("<" . $tag . ">", $_allowable_tags)) ( if (substr($s, 0, 2) === ""; if (substr($s, -2) === "/>") return "<" . $tag . " />";връщане"<" . $tag . ">"; ) ) ако ($tag === "br") върне "\r\n"; ако ($_para_tags && array_key_exists($tag, $_para_tags)) върне "\r\n\r\n"; върне ""; ) trigger_error("Неизвестен тип обратно извикване "" . $_callback_type . ""!", E_USER_ERROR); ) if (($pos = strpos($s, "<")) === false || strpos($s, ">", $pos) === false) #подобряване на скоростта ( #етикетите не са намерени върнати $s; ) $length = strlen($s); #несдвоени тагове (отваряне, затваряне, !DOCTYPE, пространство на имената на MS Word) $re_tags = "~:*+)?) #1 ". $re_attrs_fast_safe. " > ~sxSX"; $patterns = array("/<([\?\%]) .*? \\1>/sxSX", #вграден PHP, Perl, ASP код "/<\!\\]>/sxSX", #CDATA блокове #"/<\!\[ [\x20\r\n\t]* .*? \]>/sxSX", #:ОТХВЪРЛЕНО: тагове тип MS Word... "/<\!--.*?-->/sSX", #comments #MS Word тагове като "...", #условно изпълнение на код за тип IE " HTML " #условно изпълнение на код за тип IE "HTML" #вижте http://www.tigir.com/comments.htm "/<\! (?:--)?+ \[ (?>[^\]"\"]+ | "[^"]*" | \"[^\"]*\")* \] (?:--)?+ > /sxSX",); if ($pair_tags) ( #paired тагове със съдържание: foreach ($pair_tags като $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($шаблони); $i = 0; #цилиндрова защита $max = 99; докато ($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; ) ) #масив от тагове, които няма да бъдат премахнати if ($allowable_tags) $_allowable_tags = array_flip ($allowable_tags); #тагове за двойки, които ще се третират като абзаци if ($para_tags) $_para_tags = array_flip($para_tags); ) )#if #tags обработка 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); #твърде много цикли за замяна... if ($is_format_spaces && strlen($s) != = $length) ( #премахване на дублирани интервали $s = preg_replace("/\x20\x20++/sSX", " ", trim($s)); #премахване на интервали преди и след нови редове $s = str_replace (масив ("\r\n\x20", "\x20\r\n"), "\r\n", $s); #замяна на 3 и повече нови реда с 2 нови реда $s = preg_replace(" /[ \r\n](3,)+/sSX", "\ r\n\r\n", $s); ) върне $s; ) ?>

Вижте също описание на функцията