PHP. Как убрать определенные символы из строки запроса?
есть необходимость убрать некоторые символы из URL запроса, а именно знак ? и повторяющиеся слеши.
Предположим, что нужный мне URL сайта - это https://my-site.loc/ Пользователь может написать https://my-site.loc/api//user? В этой ситуации мне необходимо будет провести редирект на https://my-site.loc/api/user, то есть без знака вопроса и дополнительных слешей.
Пробовал с помощью preg_replace('/(/){2,}/', '/', (наш URL))
Но проблема в том, что он удаляет и два слеша после HTTPS и редирект идет "внутрь" сайта. Как можно удалить слеши, если их больше одного и знак вопроса?
Ответы (1 шт):
Как вариант: если перед двойным слешем буквы или цифры, его заменить на одинарный. Например так:
$str = 'https://my-site.loc/api//user?';
// так можно удалить слеши
// ищем те, перед которыми буквы и цифры
// и меняем на эту букву + 1 слеш
preg_replace('~(\w)//~', '$1/', $str);
// вместе с вопросами:
preg_replace(['~(\w)//~', '~\?~'], ['$1/', ''], $str);