Короткі php теги не працюють. PHP-функції для регулярних виразів
Регулярні висловлювання – це дуже корисний інструментдля розробників. З їх допомогою можна знаходити, визначати чи замінювати текст, слова чи будь-які інші символи. У сьогоднішній статті зібрано 15 найкорисніших регулярних виразів, які стануть у нагоді будь-якому веб-розробнику.
Введення в регулярні вирази
Багатьом розробникам-початківцям здається, що регулярні висловлювання дуже складні для розуміння та використання. Насправді, все не так уже й складно, як може здатися. Перш ніж ми безпосередньо перейдемо до регулярних виразів, з їх корисним та універсальним кодом, давайте поглянемо на основи:
Синтаксис регулярних виразів
Регулярний вираз | означає |
foo | Рядок "foo" |
^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 "Your url is ok ."; ) else ( echo "Wrong url."; )
Підсвічування слова у тексті
Це дуже корисне регулярне вираження, за його допомогою ви можете знайти потрібне слово та підсвітити його. Особливо корисно для відображення результатів пошуку.
$text = "Сample sentence from KomunitasWeb, regex has become popular in web programming. Знижка на редакцію. Взаємодія з Wiki, Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by як regular expression processor"; $text = preg_replace("/b(regex)b/i", " 1", $text); echo $text;
Підсвічування результатів пошуку у WordPress блозі
Як уже говорилося в попередньому прикладі, цей приклад коду зручно використовувати у видачі пошукових результатів і є відмінний спосіб впровадити цю функцію в wordpress-блог.
Відкрийте файл search.php, і знайдіть функцію the_title(). Замініть її наступним кодом:
Echo $title;
Тепер, вище за цей рядок, додайте цей код:
\0", $title); ?>
Збережіть файл search.php і відкрийте style.css. Додайте наступний рядок:
Strong.search-excerpt ( background: yellow; )
Отримання всіх картинок з HTML-документу
Якщо вам потрібно було отримати всі картинки з веб-сторінки, цей код повинен бути Ви легко зможете створити завантажувач зображень за допомогою можливостей cURL
$images = array(); preg_match_all("/(img|src)=("|\")[^"\">]+/i", $data, $media); unset($data); $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($ images, $url); ) )
Видалення слів, що повторюються (не чутливий до регістру)
Під час друкування часто повторюються слова? Допоможе цей регулярний вираз.
$text = preg_replace("/s(w+s)1/i", "$1", $text);
Видалення пунктуації, що повторюється.
Те саме, тільки для пунктуації. Попрощайтеся з подвійними комами.
$text = preg_replace("/.+/i", ".", $text);
Пошук XML/HTML тегів
Ця проста функція приймає два аргументи. Перший це тег, який вам потрібно знайти, і другий це змінна, що містить XML або HTML. Повторюся, цю функцію дуже зручно використовувати разом із cURL.
Function get_tag($tag, $xml) ( $tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?)".$tag.">.")", $xml, $matches, PREG_PATTERN_ORDER); return $matches; )
Пошук XHTML/XML тегів з певним значенням атрибута
Ця функція дуже схожа на попередню, за винятком того, що ви можете встановити тегу потрібний атрибут. Наприклад, ви легко зможете знайти
Function 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); return $matches; )
Пошук шістнадцяткових значень кольорів
Ще один корисний інструмент для веб-розробника! Він дозволяє вам знаходити/перевіряти шістнадцяткові значення кольору.
$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "example 6 successful."; )
Пошук заголовка статті
Цей фрагмент коду знайде та виведе на екран текст, що знаходиться усередині тегів
$fp = fopen("http://www.catswhocode.com/blog","r"); while (!feof($fp))( $page .= fgets($fp, 4096); ) $titre = eregi("
Парсинг логів Apache
Більшість сайтів запущено на всьому відомому веб-сервері Apache. Якщо ваш сайт знаходиться серед них, чому б не використовувати PHP і регулярні висловлювання для розбору логів апача?
//Logs: Apache web server //Successful hits to HTML files only. Useful for counting the number of page views. "^((?#client IP або domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+"(?: GET|POST|HEAD) ((?#file)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/+"s+(?#status code)200s+((?#bytes transferred)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent )[^"]*)"$" //Logs: Apache web server //404 errors only "^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+) s+[((?#date and time)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#parameters)[ ^ ?"]+)? HTTP/+"s+(?#status code)404s+((?#bytes transferred)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent )[^"]*)"$"
Заміна подвійних лапок "розумними" лапками
Якщо ви любитель типографіки, вам сподобається цей регулярний вираз, що замінює звичайні подвійні лапки, на "розумні лапки". Подібний регулярний вираз використовується в Wordpress у контенті сторінки.
Preg_replace("B"b([^"x84x93x94rn]+)b"B", "?1?", $text);
Комплексна перевірка пароля
Цей регулярний вираз стежитиме за тим, щоб у текстове поле було введено щонайменше шість символів, цифри, дефіси та підкреслення.
Текстове поле має містити щонайменше один символ верхнього регістру, один нижній регістр та одну цифру.
"A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?) [-_a-zA-Z0-9](6,)z"
WordPress: Використання регулярного виразу для отримання картинок із запису
Оскільки багато хто з вас є користувачами WordPressВам знадобиться код, який дозволяє отримати всі картинки, з тексту статті, і вивести їх.
Щоб використовувати цей код, просто вставте його в будь-який файл вашої теми.
post_content; $szSearchPattern = "~ ]* />~"; // Виконати помилки всіх зображень і зберегти результати в $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics); // Check to see if we have at least 1 image $iNumberOf count($aPics);, if ($iNumberOfPics > 0) ( // Тепер ви будете, що ви потрібні, щоб зробити їх з зображеннями // Для цього виразу зображення, які ви можете продовжувати ($i=0; $i< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>
Генерація автоматичних смайлів
Інша функція, яка використовується в Wordpress – дозволяє автоматично замінювати символи смайлів на картинку смайлу.
$texte="A text with a smiley:-)"; echo str_replace(":-)"," ", $ Texte);
У Вас у браузері заблокований JavaScript. Дозвольте JavaScript для роботи сайту!
strip_tags
(PHP 3> = 3.0.8, PHP 4, PHP 5)
strip_tags- Видаляє HTML та PHP теги з рядкаОпис
string strip_tags(string str [, string allowable_tags])Ця функція повертає рядок str, з якого видалено HTML та PHP теги. Для видалення тегів використовується автомат, аналогічний застосованому у функції fgetss() .
Необов'язковий другий аргумент може бути використаний для вказівки тегів, які не потрібно видаляти.
УвагаЗауваження:Аргумент allowable_tags був доданий до PHP 3.0.13 і PHP 4.0b3. З версії PHP 4.3.0 видаляються також коментарі HTML.
Так як strip_tags()не перевіряє коректність HTML коду, незавершені теги можуть призвести до видалення тексту, що не входить до теги.
Приклад 1. Приклад використання strip_tags()
$text = "Параграф.
Ще трохи тексту"; echo strip_tags($text); echo "\n\n-------\n"; // не видалятиEcho strip_tags($text, "
"); // Дозволяємо ,,echo strip_tags($text, " ");
Цей приклад виведе:
Параграф. Ще трохи тексту ------
Параграф.
Ще трохи тексту
УвагаЦя функція не змінює атрибути тегів, зазначених у аргументі allowable_tags, включаючи style та onmouseover.
З версії PHP 5.0.0 strip_tags()безпечна для обробки даних у двійковій формі.
Ця функція має істотний недолік - це склеювання слів при видаленні тегів. Крім цього функція має вразливість. Альтернативна функція аналог strip_tags:
c" * - коректно обробляється "брудний" html, коли у значеннях атрибутів того можуть зустрічатися символи< >* - коректно обробляється розбитий html * - вирізаються коментарі, скрипти, стилі, PHP, Perl, ASP код, MS Word таги, CDATA * - автоматично форматується текст, якщо він містить html код * - захист від підробок типу: "<
Дивіться також опис функції
Last update on November 27 2019 07:10:59 (UTC/GMT +8 hours)
PHP opening and closing Tags syntax
Існують чотири різні аркуші з закриттям і закриття tags, які можуть бути використані в php. Here is the list of tags.
- Default syntax
- Short open Tags
- Omit the PHP closing tag at the end of the file
Default Syntax
The default syntax starts with " php" and ends with "?>".
Example:
Short open Tags
The short tags starts with "" and ends with "?>". Short style tags є тільки наявними, коли вони є можливими в php.ini configuration file on servers.
Example:
echo "PHP example with short-tags"; ?>
Omit the PHP closing tag at the end of the file
Це recommended, що closing PHP tag shall be omitted в файлі, що міститься тільки PHP code so , що випадки accidental whitespace або нові ліні будуть приєднані до PHP closing tag, які можуть бути запущені як для повідомлень.
Example:
PHP Statement separation
У PHP, стани є визначені як semicolon (;) як C або Perl. closing tag of block of PHP code automatically implies a semicolon, there is no need to have a semicolon terminating the last line of PHP block.
Rules for statement separation
- a semicolon
- AND/OR
- a closing PHP tag
Valid Codes
У цьому розділі, як semicolon(;) і closing PHP tag є present.
У цьому випадку, є не semicolon(;) після останньої інструкції, але closing PHP tag is present.
У цьому випадку, є semicolon(;) в останній інструкції, але не closing PHP tag.
PHP Case sensitivity
У PHP user defined functions, classes, core language keywords (for example if, else, while, echo etc.) є case-insensitive. Therefore the three echo statements in the following example є equal.
Example - 1
");
");
");
?>
We are learning PHP case sensitivity We are learning PHP case sensitivity We are learning PHP case sensitivity
На іншій стороні, всі параметри є випадку-sensitive.
Consider the following example. Тільки в першому стані display the value as $amount because $amount, $AMOUNT, $amoUNT є три різні variables.
Example - 2
"); echo("The Amount is: $AMOUNT
"); echo("The Amount is: $amoUNT
");
?>
The Amount is: 200 The Amount is: The Amount is:
PHP whitespace insensitivity
В загальному, білийпростор не є вільним на екрані, включаючи простір, tabs, і end-of-line characters i.e. carriage returns. У PHP білий простір не вписується в coding. Ви можете переглянути один рядок лінії в будь-який рядок або рядок окремих місць в один рядок.
The following two examples are same:
Example:
"; echo "His Class is: $class and Roll No. is $roll_no"; ) student_info("David Rayy", "V", 12) ?>
Example: Advance whitespace insensitivity
"; echo "His Class is: $class and Roll No. is $roll_no"; ) student_info("David Rayy", "V", 12) ?>
Name of student is: David Rayy His Class is: V and Roll No. is 12
Example: Whitespace insensitivity with tabs and spaces
У наступних простих місцях і tabs є використані в numerical operation, але в одних випадках, $xyz returns the same value.
"; // tabs and spaces $xyz = 11 + 12; echo $xyz; ?>
PHP: Single line and Multiple lines Comments
Single line comment
PHP supports the following two different way of commenting.
# This is a single line comment.
//This is another way of single line comment.
Example:
Multiple lines comments
PHP supports "C", style comments. A comment starts with the character pair /* and terminates with the character pair */.
/* This is a multiple comment testing,
and these lines will be ignored
at the time of execution */
Example:
Multiple lines comments can not be nested
First PHP Script
Here is the first PHP script which will display "Hello World..." in the web browser.
<?php echo "Hello World..."; ?>
tags tell the web server для treat everything inside the tags як PHP code to run. The code is very simple. Це використовується в будівництві PHP функція "echo" для відображення тексту "Hello World ..." на веб-сторінці. Більшевід цих tags є directly to the browser.
Pictorial presentation
Combining PHP and HTML
PHP syntax is applicable only within PHP tags.
PHP може бути embedded в HTML і placed anywhere in the document.
When PHP is embedded in HTML documents and PHP parses this document it interpreted the section enclosed with an opening tag () of PHP and ignore rest parts of the document.
PHP і HTML є тому, що в наступному прикладі.
Practice here online:
Коли інтерпретатор PHP обробляє файл, він шукає теги, які вказують, де починається і закінчується PHP-код. Все, що знаходиться поза парою тегів, що відкривають і закривають, буде проігноровано інтерпретатором (тобто просто буде віддано веб-серверу як є). Наприклад, файл переданий інтерпретатору PHP має наступний код:
Це буде проігноровано інтерпретатором і просто буде віддано так, спочатку веб-серверу, а той у свою чергу віддасть браузеру.
Це теж буде проігноровано інтерпретатором і буде передано веб-серверу як є.
Якщо файл містить тільки PHP-код або він розташований в самому кінці файлу, тобто після нього нічого вже немає, то тег, що закриває, переважно опустити (не вказувати). Це допомагає уникнути додавання випадкових пробельних символів після тега PHP, що закриває, які можуть спричинити небажані ефекти.
PHP також допускає використання короткого тега, що відкриває вместо
echo "Hello World!"; ?>
Пробільні символи
У PHP коді можна використовувати пробілові символи: пробіли, табуляції та перенесення рядків. Число пробельних символів не обмежується і залежить від переваг програміста, основна мета якого - створити наочний текст програми (вихідний код), що легко читається.
У прикладі нижче представлений PHP-код, у якому використовуються пробільні символи:
Код прикладу можна було б написати і в один рядок, не використовуючи пробілових символів, але такий код буде менш зручним для читання: