За последние 24 часа нас посетили 20576 программистов и 1635 роботов. Сейчас ищет 991 программист ...

Ссылка на файл в названии которого есть +

Тема в разделе "PHP для новичков", создана пользователем Artur_hopf, 6 фев 2019.

  1. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    Добрый день. Есть функция которая считывает с папки файлы и создает к ним ссылки:
    PHP:
    1. public function pdf($id){
    2.     $dir = 'pdf';
    3.     $files = scandir($dir);
    4.     $result = "";
    5.     foreach ($files as $file){
    6.         if (substr($file, -4) == '.pdf') {
    7.                $result .= '<div class="alert alert-info pdfAlert shadow" role="alert">
    8.                     <a href="index.php&id='.$id.'&pdf='.$file.'" class="alert-link">'.$file.'</a>
    9.                </div>';
    10.        }
    11.     }
    12.   return $result;
    13. }
    Суть проблемы вот в чем, например есть фаил с таким названием:

    Инструкция + Схема.pdf

    В URL будет примерно так так:

    pdf=Инструкция%20+%20Схема.pdf

    И выйдет ошибка:

    Разыскиваемый вами ресурс был удален, было изменено его имя или он временно недоступен.

    Потому что Запрашиваемый URL-адрес будет вида:

    Инструкция Схема.pdf


    Плюсик теряется, подскажите как этого избежать?
     
    #1 Artur_hopf, 6 фев 2019
    Последнее редактирование: 6 фев 2019
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
  3. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    @Valick он превратится в пробел, а нужно чтобы плюс остался плюсом =(

     
  4. ElisDN

    ElisDN Активный пользователь

    С нами с:
    13 фев 2018
    Сообщения:
    605
    Симпатии:
    130
    http_build_query
     
  5. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    @ElisDN Со всех файликов плюсы убрал просто. http_build_query вместо пробелов везде плюсы наставил.
     
  6. ElisDN

    ElisDN Активный пользователь

    С нами с:
    13 фев 2018
    Сообщения:
    605
    Симпатии:
    130
    Имею в виду, что адрес для <a href...формируйте через http_build_query, а не конкатенацией. Тогда все символы сохранятся.
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.596
    Симпатии:
    1.764
    И правильно сделала. Читаем про url-кодирование. А настоящий плюс должен в какой-нибудь бред с процентами превратиться (я эти коды наизусть не заучивал)
    --- Добавлено ---
    А когда php разбирает гет-параметры, он превращает плюсы обратно в пробелы, а непонятные хрени с процентами - в то, что за ними скрывается