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

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

1
2
3
4
5
6
7
<?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);
?>

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

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

1
2
3
4
5
6
7
<?php
$str = "Время 14:07:23";
$patt = "([0-1][0-9]|[0-2][0-4]):([0-5][0-9]):([0-5][0-9])";
$str_repl = часов \\2 минут \\3 секунд";
// выводит Время 14 часов 07 минут 23 секунд
echo eregi_replace($patt, $str_repl, $str);
?>

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

1
2
3
4
5
6
7
<?php
$str = "His name is Bon.";
$patt = "Bon";
$str_repl = "\\0-\\0";
// выводит "His name is Bon-Bon"
echo ereg_replace($patt, $str_repl, $str);
?>

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

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100