Мне кажется стоит сначала разбить строку на массив, по запятой, для этого и
explode() подойдет, а потом уже разбирать отдельно определяя есть код или нету, сколько знаков и т.д.
буду разбивать строку по запятым и проверять длину полученных подстрок
а разве у Вас все телефоны 6-значные? Думаю там более сложная логика нужна и в несколько этапов. Проверка на первую 8-ку, проверка на скобки, потом кол-во знаков. Не совсем понимаю почему все коды одинаковые Вы подставляете (3522)? Боюсь тут с регуляркой сложно, какой-то монстр получится.