以下是my code:
$url = "http://localhost/myweb/qanda/1/";
var_dump(filter_var($url, FILTER_VALIDATE_URL));
//=> string(31) "http://localhost/myweb/qanda/1/"
它被称为有效的URL,一切都很好。但是there is a Persian character in the URL:
时,我的代码无效$url = "http://localhost/myweb/qanda/1/س";
var_dump(filter_var($url, FILTER_VALIDATE_URL));
//=> bool(false)
为什么呢?我该如何解决?
答案 0 :(得分:3)
好吧,主要是因为根据RFC输入的字符串不是有效的网址:
“只有字母数字[0-9a-zA-Z],特殊字符”$ -_。+!*'(),“[不包括引号 - ed]和用于保留目的的保留字符可能在URL“
中使用未编码的
您的客户(浏览器)会将您的角色转换为有效的%D8%B3
并将其发送到服务器,但您的客户可能仍然会显示س
(我的)。
基本上,正确的URL将被验证如下:
$url = "http://localhost/myweb/qanda/1/%D8%B3";
var_dump(filter_var($url, FILTER_VALIDATE_URL));
您可以安全地使用urlencode()翻译外国字符。