Регулярное выражение для удаления числа из строки
Подскажите.
Нужно из строки удалить определенное число. Например из строки
$str = '10 20 150 50 750 550 50';
удалить число 50, именно чтобы оно не затронуло 150, 750, 550.
пробую
preg_replace("/50[^\d]+/", NULL, $str );
но оно некорректно работает в начале и конце строки. Совсем что то завис, помогите?
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Используйте один из следующих способов:
$str = '10 20 150 50 750 550 50';
$str = preg_replace('~\b50\b~', '', $str);
$str = preg_replace('~(?<!\d)50(?!\d)~', '', $str);
$str = preg_replace('~(?<!\S)50(?!\S)~', '', $str);
$str = preg_replace('~(?<!\d\.|\d)50(?!\.?\d)~', '', $str);
Тут
\b50\b- границы слова(?<!\d)50(?!\d)- цифровые границы(?<!\S)50(?!\S)- пробельные границы(?<!\d\.|\d)50(?!\.?\d)- это разновидность цифровых границ, найдёт50, но не50.35.