我有一个非常简单的表单,由两个文件组成:
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>"
?>
在表单字段'name'中填写波兰语字符(ł±źćę)
当您点击SEND脚本时,会为我生成一个表单链接:
"<a href='http://myaddress/l a ź ć e ó/'>NAME</a>"
链接应以以下形式生成:
"<a href='http://myaddress/%B3+%B1+%BC+%E6+%EA+%F3/'>NAME</a>"
答案 0 :(得分:1)
你试过了吗?
<?php
$name = $_POST['name'];
echo "<a href='http://myaddress/' . urlencode($name) . '/'>NAME</a>"
?>
答案 1 :(得分:1)
%xx
编码形式为percent-encoding或“网址编码”。您可以使用rawurlencode
函数生成它。该函数获取字符串的原始字节并将其转换为百分比编码组。因此,确切的输出取决于您输入的字节数,即文本的编码格式。
如果你需要“ź”编码为%BC
,那么它必须用ISO-8859-2编码(如你所说)。有两种方法可以实现:
通过添加适当的属性确保您的表单以ISO-8859-2提交:
<form accept-charset="iso-8859-2">
如果您没有提交所需的编码,请在服务器上进行转换:
$name = iconv('UTF-8', 'ISO-8859-2', $_POST['name']);
然后rawurlencode($name)
会产生%B3+%B1+%BC+%E6+%EA+%F3
。
答案 2 :(得分:0)
您可以使用 urlencode(str)。 urldecode(str)反转。
$name = urlencode($_POST['name']);
echo "<a href='http://myaddress/$name/'>NAME</a>"
这将产生类似的结果,
<a href='http://myaddress/%C5%82+%C4%85+%C5%BA+%C4%87+%C4%99+%C3%B3/'>NAME</a>