Прошу подправить регулярку

Статус
В этой теме нельзя размещать новые ответы.

Denixxx

Мой дом здесь!
Регистрация
7 Фев 2014
Сообщения
244
Реакции
216
Есть регулярка, которая из дебильных запросов клиентов делает красиво для последующей вставки в запрос:
PHP:
$data='qw1bffcz,2,232,9,';
//получаем строку для вставки в «SELECT * FROM `table` WHERE `key` IN ($data)»
echo preg_replace("/[^0-9,]+/",'',$data);
Результат:

Как вырезАть ещё запятые в начале и конце, в одной регулярке?
Что-то не соображу (видимо пятница), помогите.
 
Последнее редактирование:
либо ~[^0-9,]+|,\Z|\A,~
либо trim($str , ',')
 
Я уже реализовал именно этот вариант, но мне кажется некошерным обрабатывать 2-мя функциями вместо одной:
PHP:
return trim(preg_replace("/[^0-9,]+/",'',$data),",");
либо ~[^0-9,]+|,\Z|\A,~
Это не сработает, если запятых спереди/сзади несколько.
 
Запятые в начале могут чередоваться с другим мусором.

PHP:
$data='q,w1bffcz,2,232,9,q';
echo preg_replace("~[^0-9,]+|,+\Z|\A,+~",'',$data);



Тут нужно шаблоном \A[^0-9]+ захватить всё до первой цифры, т.е. весь мусор с запятыми.
PHP:
$data='q,w1bffcz,2,232,9,q';
echo preg_replace("~\A[^0-9]+|[^0-9,]+|[^0-9]+\Z~",'',$data);

 
Последнее редактирование:
А повторяющиеся запятые в середине не беспокоят?
Вроде такого 1,2,,,,,232,9
PHP:
$data='q,w1bff,c,z,2,232,9,q';
echo preg_replace("~\A[^0-9]+|[^0-9,]+|[^0-9]+\Z~",'',$data);
PHP:
$data='q,w1bff,c,z,2,232,9,q';
echo preg_replace("~\A[^0-9]+|[^0-9,]+|,[^0-9]*(?=,)|[^0-9]+\Z~",'',$data);
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху