Как заменить подстроку другой строкой?

ПрограммированиеPHPКак заменить подстроку другой строкой?

Требуется заменить подстроку другой строкой. Например, перед тем как напечатать номер кредитной карты, вы хотите скрыть все цифры ее номера, за исключением последних четырех.
30 Сен. 2015 | 20:12:14
BugBuster
Пользователь

Оценить

2

Положительные: 2
Отлицательные: 0

Комментариев: 1

коммент #23
30 Сен. 2015 | 20:17:28

Coder
PHP Программист
Используйте функцию 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); // My pet is a fish.
print substr_replace('My pet is a blue dog.', 'green', 12, 4); // My pet is a green dog.

$credit_card = '4111 1111 1111 1111';
print substr_replace($credit_card,'xxxx ', 0, strlen($credit_card)-4); // xxxx 1111

Если число $start отрицательное, то новая подстрока помещается в позицию $start, считая от конца строки $old_string, а не с начала:
echo substr_replace('My pet is a blue dog.', 'fish.', -9); // My pet is a fish.
echo substr_replace('My pet is a blue dog.', 'green', -9, 4); // My pet is a green dog.

Функция substr_replace() удобна, когда текст невозможно отобразить за один раз, и вы хотите показать его часть со ссылкой на остальное содержание. Например, следующее выражение отображает 25 строк текста с многоточием в качестве ссылки на страницу с продолжением:
$r = mysql_query("SELECT id,message FROM messages WHERE id = $id") or die();
$ob = mysql_fetch_object($r);
printf('<a href="more text.php?id=%d">%s</a>', $ob->id, substr_replace($ob->message,' ...', 25));