- Подробности
-
Категория: PHP. Синтаксис
Функция preg_replace()
В данном уроке рассмотрен вариант замены первого вхождения символа плюс в строку.
Функция preg_replace — выполняет поиск и замену по регулярному выражению.
Синтаксис функции такой:
mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])
Разберём синтаксис.
pattern — это шаблон по которому ищется совпадение в строке subject и если оно найдено, то оно заменяется строкой replacement. Причём замена происходит во всей строке. Для того чтоб сократить аппетит функции preg_replace и заменить только первое вхождение заданного символа (или словосочетания) в строке, limit должен быть равен единице. Если лимит не указан или равен -1, функция preg_replace делает замену во всей строке replacement, где находится совпадение с патерном (pattern).
Хочу отметить, что здесь я не касаюсь всей функциональности preg_replace функции, для этого есть документация. Могу только дополнить что паттерном может быть массив значений, в прочем как и replacement.
В примере ниже заменим первое вхождение знака плюс (+) на знак не равно (<>).
Листинг № 1 — Поиск и замена с помощью функции preg_replace.
<?php
$str="1+2*3+4/5+6";
$patterns ="/[+]/";
$replace = "<>";
print preg_replace($patterns, $replace, $str, 1);
// выведет 1<>2*3+4/5+6
?>
Меняем знак между десятичных цыфр
Как заменить все точки в строке, которые находятся между цифр?
В данном примере используется именно этот ответ на вопрос выше, но понятно, что это всего лишь пример и его можно модифицировать используя конструкции регулярных выражений ретроспективной проверки (?<= и опережающей проверки (?=
Листинг № 2 — Меняем знак между десятичных цыфр
<?php
$string = 'Сегодня: ' .date('d.m.Y время H.i.s').
'<br>В этом тексте нужно заменить точку (.) в выражениях (18.01.2013) или в выражениях подобных 17.40. В тексте точка меняться не будет.';
$pattern = "/(?<=d).(?=d)/";
$replacement = "-";
echo preg_replace($pattern, $replacement, $string);
?>