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

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

Denixxx

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

Как вырезАть ещё запятые в начале и конце, в одной регулярке?
Что-то не соображу (видимо пятница), помогите.
 
Последнее редактирование:

KillDead

Хранитель порядка
Регистрация
11 Авг 2006
Сообщения
894
Реакции
579
либо ~[^0-9,]+|,\Z|\A,~
либо trim($str , ',')
 

Denixxx

Мой дом здесь!
Регистрация
7 Фев 2014
Сообщения
244
Реакции
215
Я уже реализовал именно этот вариант, но мне кажется некошерным обрабатывать 2-мя функциями вместо одной:
PHP:
return trim(preg_replace("/[^0-9,]+/",'',$data),",");
либо ~[^0-9,]+|,\Z|\A,~
Это не сработает, если запятых спереди/сзади несколько.
 

lag

Мой дом здесь!
Регистрация
13 Окт 2014
Сообщения
290
Реакции
366
Запятые в начале могут чередоваться с другим мусором.

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);

 

Denixxx

Мой дом здесь!
Регистрация
7 Фев 2014
Сообщения
244
Реакции
215
Последнее редактирование:

lag

Мой дом здесь!
Регистрация
13 Окт 2014
Сообщения
290
Реакции
366
А повторяющиеся запятые в середине не беспокоят?
Вроде такого 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);
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху