Обратни референции (Back references)
13 август |
Извън знака за клас (квадратните скоби), обратния слаш, последван от число по-голямо от 0 е обратна референция за пренасяне на подшаблон. Ако числото, следващо след обратния |
---|---|
слаш е по-малко от 10, със сигурност това е обратна референция.
Обратните референции са особено важни, ако е необходимо да се извади фрагмент от някакъв текст
и когато
се налага замяна на един стринг с друг. Регулярният израз |
/([0-9]{4})([0-9]{6})?$/
(код на оператора)(мобилен номер)
(код на оператора)(мобилен номер)
е предназначен за проверка дали правилно е въведен мобилен номер. Кода на оператора се състои от 4 цифри, последвани от шестцифрения мобилен номер. Шаблонът се състои от две групи цифри, поставени в скоби: ([0-9]{4}) и ([0-9]{6}). При съпоставяне на регулярния израз с въведения номер, в РНР автоматично се номерират, заключените в скоби групи, започвайки от 1. С помощта на обратните референции можем да се обърнем към символите от всяка отделна група с помощта на обратен слаш (\), поставен пред съответното число.
Приемаме, че мобилният номер е 0111 111111. Ако го проверим с горепосочения регулярен израз, с обратна референция \1, ще получим числото 0111, а ако обратниата референция е \2, числото ще е 111111.
Съпоставяне с шаблон и замяната му
С помощта на функцията preg_replace() можете да търсите определен стринг в текст и да го заменяте с друг. Синтаксисът на функцията е:
mixed preg_replace(mixed $pattern, mixed $replacement,
mixed $subject [, int $limit = -1 [, int &$count ]] )
Функцията търси стринга $subject за съответствие с променливата $pattern и го замества с $replacement. Шаблонт може да е стринг или масив, съдържащ стрингове.
$limit- максимално възможните замествания за всеки шаблон в стринга $subject. Подразбиращата се стойност е -1 (без ограничения).
$count – тази променлива съдържа броят на направените замествания.
mixed preg_replace(mixed $pattern, mixed $replacement,
mixed $subject [, int $limit = -1 [, int &$count ]] )
Функцията търси стринга $subject за съответствие с променливата $pattern и го замества с $replacement. Шаблонт може да е стринг или масив, съдържащ стрингове.
$limit- максимално възможните замествания за всеки шаблон в стринга $subject. Подразбиращата се стойност е -1 (без ограничения).
$count – тази променлива съдържа броят на направените замествания.
- Отворете текстовия редактор.
- Създайте нов файл.
- Копирайте съдържанието на файла form_1.html (http://dreamlandpoly.blogspot.com/p/regularexpression-2.html#form_1 ) в него.
- Съхранете файла с наименование form_2.html.
- Заменете ред 9 със следния:
<form action="HandleForm_2.php" method="post" target="_blank">
- Заменете ред 12, който взема адреса на електронната поща, със следния ред:
URL:<br/> <input type=text name=”URL” /> <br/><br/>
- Заменете ред 13 със следния ред:
Описание:<br/><textarea name=”Description”></textarea><br/><br/>
Съдържанието на файла form_2.html ще бъде:<!--form_2.html.html--> <!Doctype html> <html> <head> <title>HTML Форма</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <form action="HandleForm_2.php" method="post" target="_blank"> Име: <br/><input type=text name="firstname" /> <br/><br/> Фамилия: <br/><input type=TEXT NAME="lastname" /> <br/><br/> URL:<br/> <input type=text name=”URL” /> <br/><br/> Описание: <br/><textarea name=”Description” ></textarea><br/><br/> <input type=submit name="submit" formenctype="multipart/form-data" value="Напред >>"/> </form> </body> </html>
- Съхранете файла и го качете на сървъра.

Ще редактираме и файла HandleForm_1.php (http://dreamlandpoly.blogspot.com/p/regularexpression-2.html#handle_form_1)
- Отворете текстовия редактор.
- Създайте нов файл и го наименовайте HandleForm_2.php.
- Заместете редове 15 и 16 с
$url = $_POST['URL']; $description = $_POST['description'];
- Премахнете редовете от 27 до 37.
Крайният файл HandleForm_2.php ще има вида:<!DOCTYPE html> <html> <head> <title>Прирожение на регулярните изрази</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <?php /*Тази страница получава и обработва данните от „form_2.html” */ if (isset($_POST['submit'])) { $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $url = $_POST['url']; $description = $_POST['description']; //Проверява дали са въведени име и фамилия на потребителя if (($firstname) and ($lastname)) { $name = $firstname . " ". $lastname; echo "Здравейте," . " " . $name . "!" . "<br>" . "<br>"; } else { echo "Моля, въведете име и фамилия!<br>"; } //Извежда съдържанието на променливата $description //преди да е приложена функцията preg_replace() echo $description . "<br>" . "<br>"; //Задава шаблон за URL адрес $pattern = '#[ ]+(www.([a-z0-9._-]+))#i'; //Задава с какво да се замести стринга //съответстващ на щаблона $replace = '<a href="$1">$1</a>'; //Прилага се функцията preg_replace() и върнатата //стойност се присвоява на променливата $description $description = preg_replace($pattern," <a href='http://$1'>$1</a>"
,$description); echo $description; } ?> </body> </html> - Съхранете файла. Качете го на сървъра и тествайте в браузъра.

|
Няма коментари:
Публикуване на коментар