Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么筛选验证URL不';你不适合波斯语角色吗?_Php_Url - Fatal编程技术网

Php 为什么筛选验证URL不';你不适合波斯语角色吗?

Php 为什么筛选验证URL不';你不适合波斯语角色吗?,php,url,Php,Url,这是: 这是一个有效的URL,一切正常。但我的代码在以下情况下不起作用: 为什么??我怎样才能修好它 基本上是因为您输入的字符串不是有效的URL,根据: “仅字母数字[0-9a-zA-Z],特殊字符“$-。+!*”(),“[不包括引号-ed]和用于保留目的的保留字符可以在URL中非编码使用” 您的客户端(浏览器)会将您的角色转换为有效的%D8%B3,并将其发送到服务器,但您的客户端可能仍会显示س(我的客户端会) 因此,基本上,正确的URL将按如下方式进行验证: $url = "http://lo

这是:

这是一个有效的URL,一切正常。但我的代码在以下情况下不起作用:


为什么??我怎样才能修好它

基本上是因为您输入的字符串不是有效的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));