Замещение подстрок

Задача
Требуется заменить подстроку другой строкой. Например, перед тем как напечатать номер кредитной карты, вы хотите скрыть все цифры ее номера, за исключением последних четырех.

Решение
Используйте функцию substr_replace():

// Все, начиная с позиции $start до конца строки $old_string,
// заносится в $new_substring
$new_string = substr_replace($old_string,$new_substring,$start);
// $length символов, начиная с позиции $start, заменяются на $new_substring
$new_string = substr_replace($old_string,$new_substring,$start,$length);

Обсуждение
Без аргумента $length, функция substr_replace() заменяет все, начиная с позиции $start до конца строки. Если значение $length определено, то замещается только это количество:

print substr_replace('My pet is a blue dog.','fish.',12);
print substr_replace('My pet is a blue dog.','green',12,4);
$credit_card = '4111 1111 1111 1111';
print substr_replace($credit_card,'xxxx ',0,strlen($credit_card)-4);
My pet is a fish.
My pet is a green dog.
xxxx 1111

Если число $start отрицательное, то новая подстрока помещается в позицию $start, считая от конца строки $old_string, а не с начала:

print substr_replace('My pet is a blue dog.','fish.',-9);
print substr_replace('My pet is a blue dog.','green',-9,4);
My pet is a fish.
My pet is a green dog.

Если $start и $length равны 0, то новая подстрока вставляется в начало $old_string:

print substr_replace('My pet is a blue dog.','Title: ',0,0);
Title: My pet is a blue dog.

Функция substr_replace() удобна, когда текст невозможно отобразить за один раз, и вы хотите показать его часть со ссылкой на остальное содержание.


Например, следующее выражение отображает 25 строк текста с многоточием в качестве ссылки на страницу с продолжением:

$r = mysql_query("SELECT id,message FROM messages WHERE id = $id") or die();
$ob = mysql_fetch_object($r);
printf('%s',
$ob->id, substr_replace($ob->message,' ...',25));

На странице more-text.php для извлечения полного текста сообщения и его отображения может использоваться идентификатор сообщения, переданный в строке запроса.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Анализ данных, разделенных запятой
Анализ данных, состоящих из полей фиксированной ширины
Включение функций и выражений в строки
Доступ к подстрокам
Посимвольная обработка строк

Вернуться в раздел: PHP / 1. Строки