Задать вопрос
chigolberi
@chigolberi

PHP обрезает ссылку после знака #?

Всем привет!

PHP должен брать ссылку из браузерной строки:
<?php
$url = isset($_REQUEST['url']) ? $_REQUEST['url'] : '';
if(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)){
    sleep(0);
}
?>

Вот пример ссылки в браузерной строке:
http://site.ru/dw/?url=https://mega.nz/file/e8hzUIJS#eE1Nb6VdmFmtF2YlgO8a25X09l_fa9uxtTOjNNBgIS


Но почему то ссылка берётся только до знака #, в результате получаю:
https://mega.nz/file/e8hzUIJS

Подскажите как исправить ?

PS. PHP 7.4
  • Вопрос задан
  • 240 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
Vamp
@Vamp
Символ # является спецсимволом, который требуется кодировать как %23.
По-хорошему ваша ссылка должна выглядеть вот так:
http://site.ru/dw/?url=https%3A%2F%2Fmega.nz%2Ffile%2Fe8hzUIJS%23eE1Nb6VdmFmtF2YlgO8a25X09l_fa9uxtTOjNNBgIS

В этом примере кодированы все спецсимволы, а не только #. Такой вид ссылки гарантированно будет работать так, как вы хотите.

В php за подобное кодирование отвечает функция rawurlencode().
Ответ написан
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы