У меня очень простая форма, состоящая из двух файлов:

FORM.PHP

<form action="test.php" method="post">

<input type='text' name = 'name'  value="ł ą ź ć ę ó"  >    

<input id='submit' type='submit' name = 'submit' value="SEND">

</form>`

И TEST.PHP

<?php
$name = $_POST['name'];

echo "<a href='http://myaddress/$name/'>NAME</a>"
?>

В поле формы "имя" введите польские символы (ł ą ź ć ę ó)

При нажатии кнопки ОТПРАВИТЬ скрипт генерирует мне ссылку вида:

"<a href='http://myaddress/l a ź ć e ó/'>NAME</a>"

Ссылка должна сгенерироваться в виде:

"<a href='http://myaddress/%B3+%B1+%BC+%E6+%EA+%F3/'>NAME</a>"
-1
Rafał Kokosiński 5 Сен 2016 в 11:53

2 ответа

Лучший ответ

Кодированная форма %xx - это процентное кодирование . или "кодировка URL". Вы можете создать его с помощью функции rawurlencode. Эта функция берет необработанные байты вашей строки и превращает их в группы, закодированные в процентах. Таким образом, точный вывод зависит от того, какие именно байты вы вводите, то есть в какой кодировке находится ваш текст.

Если вам нужно «ź» для кодирования в %BC, тогда он должен быть закодирован в ISO-8859-2 (как вы говорите). Есть два способа получить это:

  1. Убедитесь, что ваша форма отправлена ​​как ISO-8859-2, добавив соответствующий атрибут:

    <form accept-charset="iso-8859-2">
    
  2. Если вы не отправляете в нужной кодировке, вместо этого конвертируйте ее на сервере:

    $name = iconv('UTF-8', 'ISO-8859-2', $_POST['name']);
    

Тогда rawurlencode($name) должно привести к %B3+%B1+%BC+%E6+%EA+%F3.

1
deceze 5 Сен 2016 в 09:17

Попытался ли ты:

<?php
$name = $_POST['name'];

echo "<a href='http://myaddress/' . urlencode($name) . '/'>NAME</a>"
?>
1
Robba 5 Сен 2016 в 09:00