Php 为什么筛选验证URL不';你不适合波斯语角色吗?
这是: 这是一个有效的URL,一切正常。但我的代码在以下情况下不起作用:Php 为什么筛选验证URL不';你不适合波斯语角色吗?,php,url,Php,Url,这是: 这是一个有效的URL,一切正常。但我的代码在以下情况下不起作用: 为什么??我怎样才能修好它 基本上是因为您输入的字符串不是有效的URL,根据: “仅字母数字[0-9a-zA-Z],特殊字符“$-。+!*”(),“[不包括引号-ed]和用于保留目的的保留字符可以在URL中非编码使用” 您的客户端(浏览器)会将您的角色转换为有效的%D8%B3,并将其发送到服务器,但您的客户端可能仍会显示س(我的客户端会) 因此,基本上,正确的URL将按如下方式进行验证: $url = "http://lo
为什么??我怎样才能修好它 基本上是因为您输入的字符串不是有效的URL,根据: “仅字母数字[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-仅在url的相关部分上使用:
$url=http://localhost/myweb/qanda/1/' . urlencode(“س”)
-对整个字符串进行编码将同时对斜杠和冒号进行编码。如果我的整个url是一个变量,我该怎么办?我是否应该基于斜杠进行拆分,对每个部分进行URL编码并连接字符串?
$url = "http://localhost/myweb/qanda/1/س";
var_dump(filter_var($url, FILTER_VALIDATE_URL));
//=> bool(false)
$url = "http://localhost/myweb/qanda/1/%D8%B3";
var_dump(filter_var($url, FILTER_VALIDATE_URL));