Помогите составить рег выражение

dimm_mds

Новичок
Всем привет!
Завис я уже...
Собственно, есть строка, например 56-323-5656-235-56-2135-56
Нужно заменить все вхождения 56, и его правый -, если он есть, как отдельного числа, т.е. в результате получить:
323-5656-235-2135-

Спасибо!
 

zerkms

TDD infected
Команда форума
PHP:
$str = '56-323-5656-235-56-2135-56';
var_dump(preg_replace('~56(-|$)~', '', $str));
 

dimm_mds

Новичок
Спасибо, что откликнулись, но!
В вариате zerkms получаем 323-56235-2135-, а не
323-5656-235-2135-,
т.е. удаляет лишнюю 56-, а должно удалять непосредственно 56 и разделитель, т.е. нужно указать, что начинаться должно с пустоты(начало строки) или разделителя(-)далее само число, за которым может быть разделитель(-) или конец строки и все!
что-то вроде ~(^|-)56(-|$)~
Так отрабатывает нормально, только удаляется лишний разделитель, выходит: 323-5656-2352135...помогите чуток поправить, т.е. что-бы не заменяло разделитель слева, но он был условием для начала!
 

dimm_mds

Новичок
Сорри, не правильно выразился. Короче идея такая:
Есть строка 56-323-5656-235-56-2135-56, в ней числа(id) разбиты разделителем "-".
Задача, убрать в этой строке id=56
Строку для примера я прописал специально, с разным вхождениям числа 56,так что-бы исключить глюк, что убирая id=56, я могу и другие id с вхождением 56 подкоцать(как, например, 5656).
Да, строка может быть просто 56, так вот этот 56 тоже должно убирать!
 

Semen

Семён
если это список id,то почему повторяются id
лучше задачу опиши
 

dimm_mds

Новичок
Задачу я описал выше. А id повторяться не будут! Эту строку я составил для того, что-бы проверить насколько правильно работает рег выражение. В строке просто могут быть, как я и писал, например, 56-123-5656, может быть 56-321-1256, может быть 321-56-5656 и т.д....т.е. если рег правильно отработает в строке что я предоставил изначально(убиреть конкретно id=56), то можно быть уверенным, что глюка не произойдет!
 

movRAX

Новичок
Можно и без регулярок тогда:
PHP:
implode( '-', array_diff( explode( '-', $in ), array( 56 ) ) );
 

dimm_mds

Новичок
:) верю, можно...но по скорости работы, думаю, рег быстрее отработает, чем разбирать-собирать массив....
 
Сверху