preg_replace('{\?+}', '?', 'Is this thing on??? or what???');
То есть, вам нужно только избежать знака вопроса, плюс в "\? +" Означает, что мы заменяем каждый экземпляр одним или несколькими символами, хотя я подозреваю, что "\? {2,}" может быть еще лучше и эффективнее (заменяя каждый экземпляр двумя или более знаками вопроса.