ТОП PHP скрипт сегодня: Master QR

Вы Тут:

Главная ›› Книги ›› PHP 5.0 для чайников ›› Замена по шаблону

Замена по шаблону в PHP

В РНР имеется возможность не только проверять соответствие строки определенному шаблону, но и заменять совпавшие с ним части строки. Для этого применяют функции ereg_replace() и eregi_replace() - листинг 15.7.

Листинг 15.7. Замена по шаблону.

<html>
<head>
<title> Замена по шаблону </title>
</head>
<body>
<?php
$str = "His name is Bob. Bob is my friend.";
$patt = "Bob";
$str_repl = "Bill";

// выводит "His name is Bill. Bill is my friend."
echo ereg_replace ($patt, $str_repl, $str);
?>
</body>
</html>

В данном примере в строке $str ищутся все подстроки, удовлетворяющие шаблону $patt, и заменяются строкой $str_replace. В результате функция ereg_replace() возвращает строку со всеми заменами. В нашем случае это будет His name is Bill. Bill is my friend. Если функция не находит подстроки, удовлетворяющие шаблону, то она возвращает исходную строку.

Стоит обратить внимание на особенность работы функции ereg_ replace() в том случае, если в задаваемом шаблоне используются скобки (листинг 15.8).

Листинг 15.8. Особенности замены по шаблону.

<html>
<head>
<title> Особенности замены по шаблону </title>
</head>
<body>
<?php
$str = "Время 14:07:23";
$patt = "([0-1][0-9]|[0-2][0-4]):([0-5][0-9]):([0-5][0-9])";
$str_repl = "\\1 часов \\2 минут \\3 секунд";

// выводит Время 14 часов 07 минут 23 секунд
echo eregi_replace($patt, $str_repl, $str);
?>
</body>
</html>

В строке $str_repl используются специальные сочетания символов (\\1, \\2 и \\3). В результате выполнения функции ereg_replace() вместо них вставляется подстрока, которая удовлетворяет шаблону, находящемуся в скобках с соответствующим номером. Всего возможно использовать цифры от 0 до 9. При этом \\0 будет соответствовать всей строке шаблона - листинг 15.9.

Листинг 15.9. Замены по шаблону без учета регистра.

<html>
<head>
<title> Замены по шаблону без учета регистра </title>
</head>
<body>
<?php
$str = "His name is Bon.";
$patt = "Bon";
$str_repl = "\\0-\\0";

// выводит "His name is Bon-Bon"
echo ereg_replace ($patt, $str_repl, $str);
?>
</body>
</html>

Как вы, наверное, догадались, функция eregi_replace() идентична ereg_replace(), но не чувствительна к регистру.

Телеграм канал цветы карачаевск Цветочная лавка АЖУР.