Синтаксис href: нормально ли иметь пробел в имени файла - PullRequest
40 голосов
/ 13 ноября 2010

моя практика всегда заключалась в том, что когда я использую изображения, я называю их как walls_ico, bu_hover

поэтому, когда я даю пути, они идут как

<img src="images/walls_ico.ico" />
<img src="buttons/bu_hover.png" />

ДО сейчас, когда я нахожусь в проекте, где пользователи загружают файлы ...

Мне было интересно, нормально ли иметь пробелы между именем файла и папки, например

<img src="buttons/bu hover.png" />

Ответы [ 4 ]

57 голосов
/ 13 ноября 2010

Атрибут src должен содержать действительный URL . Поскольку пробелы не допускаются в URL, вам необходимо кодировать их .

Вы можете написать:

<img src="buttons/bu%20hover.png" />

Но не :

<img src="buttons/bu+hover.png" />

Поскольку, как справедливо указывает DavidRR в своем комментарии, кодирование пробелов в виде + допустимо только в части строки запроса URL-адреса, а не в самом пути.

4 голосов

Цитирование HTML5 в поддержку Фредерика о том, что пробелы запрещены:

http://www.w3.org/TR/html5/links.html#attr-hyperlink-href:

Атрибут href в элементах a и area должен иметь значение, которое является допустимым URL-адресом, потенциально окруженным пробелами.

Определение «действительного URL» указывает на: http://url.spec.whatwg.org, которое определяет кодовые точки URL https://url.spec.whatwg.org/#url-code-points:

Кодовые точки URL-адреса: буквенно-цифровые символы ASCII, "!", "$", "&", "'", "(", ")", "*", "+", ",", "-" , ".", "/", ":", ";", "=", "?", "@", "_", "~" и кодовые точки в диапазонах от U + 00A0 до U + D7FF , U + E000 до U + FDCF, U + FDF0 до U + FFFD, U + 10000 до U + 1FFFD, U + 20000 до U + 2FFFD, U + 30000 до U + 3FFFD, U + 40000 до U + 4FFFD, U +50000 до U + 5FFFD, U + 60000 до U + 6FFFD, U + 70000 до U + 7FFFD, U + 80000 до U + 8FFFD, U + 90000 до U + 9FFFD, U + A0000 до U + AFFFD, U + B0000 до U + BFFFD, от U + C0000 до U + CFFFD, от U + D0000 до U + DFFFD, от U + E1000 до U + EFFFD, от U + F0000 до U + FFFFD, от U + 100000 до U + 10FFFD.

Спецификация затем использует термин кодовые точки URL в различных частях алгоритма синтаксического анализа как:

Если c не кодовая точка EOF, не кодовая точка URL и не "%", ошибка синтаксического анализа.

для схемы, полномочий, относительного пути, состояния запроса и состояний фрагмента: так что весь URL.

2 голосов
/ 25 мая 2015

Если вы используете PHP

, найдите этот код

$result = mysqli_query($con,$sql);
    //echo $ip."<br />";REGEXP
    //echo $name."<br />";
    echo "<table border=2px style='border-radius=20px;' align=center><tr>
    <th>Document ID</th>
    <th>Document Name Type</th>
    <th>Download Documents</th>
    </tr>";//<th>Project Document Type</th>
    while($row = mysqli_fetch_array($result)) {
        $path1=$row['FOLDERNAME'] .'/'. $row['FILENAME'] .'.'. $row['DOCTYPE'];
        $path=str_replace(" ", '%20', $path1);
        echo "<tr>";
        echo "<td>" . $row['DocID'] . "</td>";
       // echo "<td>" . $row['PROJDOCTYPE'] . "</td>";Thank you. Your Apple ID is now ready for use.
        echo "<td>" . $row['DOCNAME'] . "</td>";
        echo '<td><a href=Tender/'.$path.'>'.$row['DOCNAME'].'</a></td>';
        echo "</tr>";
    }
    echo "</table>";

    mysqli_close($con);
0 голосов
/ 13 ноября 2010
<body>
<img src="file:///C|/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/Water lilies.jpg"
</body>

пробелы будут разрешены только при работе на локальных хостах

...