Регулярни изрази (Част 4)

Обратни референции (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 – тази променлива съдържа броят на направените замествания.

  1. Отворете текстовия редактор.
  2. Създайте нов файл.
  3. Копирайте съдържанието на файла form_1.html (http://dreamlandpoly.blogspot.com/p/regularexpression-2.html#form_1 ) в него.
  4. Съхранете файла с наименование form_2.html.
  5. Заменете ред 9 със следния:
    <form  action="HandleForm_2.php" method="post" target="_blank">
    
  6. Заменете ред 12, който взема адреса на електронната поща, със следния ред:
    URL:<br/> <input type=text name=”URL” /> <br/><br/>
    
  7. Заменете ред 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>
    
  8. Съхранете файла и го качете на сървъра.
form_2.png


Ще редактираме и файла HandleForm_1.php (http://dreamlandpoly.blogspot.com/p/regularexpression-2.html#handle_form_1)
  1. Отворете текстовия редактор.
  2. Създайте нов файл и го наименовайте HandleForm_2.php.
  3. Заместете редове 15 и 16 с
    $url = $_POST['URL']; 
    $description = $_POST['description'];
    
  4. Премахнете редовете от 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>
  5. Съхранете файла. Качете го на сървъра и тествайте в браузъра.
Handle_form_2.png


sign.png

Няма коментари:

Публикуване на коментар