Как отфильтровать все символы которые запрещены в URL?
1.
Детально: https://tools.ietf.org/html/rfc3986
Кратко: https://ru.wikipedia.org/wiki/URL
Конкретный список символов: https://ru.wikipedia.org/wiki/URL#Реализация

2.
https://www.php.net/manual/ru/function.filter-var.php
FILTER_SANITIZE_URL

Используя filter_var, вам, собственно, и не нужно помнить список символов.
preg_replace
Функции для работы с регулярными выражениями
Примеры использования регулярных выражений на php