Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/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
在url中传递百分比(%)符号,并使用php获取其确切值_Php_Urlencode - Fatal编程技术网

在url中传递百分比(%)符号,并使用php获取其确切值

在url中传递百分比(%)符号,并使用php获取其确切值,php,urlencode,Php,Urlencode,我正在尝试通过百分比(%)登录url,如 %B6011000995504101^SB 但当我回音时,它又回来了 ♦011000995504101^SB 我想要和我在URL中传递的值完全相同的值 我尝试过使用urlencode()函数,但它会给我这样的输出 %B6011000995504101%5ESB 请帮助我了解这一点回答: 要发送%登录url,请改为发送%25 在您的情况下,为了让php看到百分号,必须将字符串%25B6011000995504101^SB传递给服务器 为什么? 在UR

我正在尝试通过百分比(%)登录url,如

%B6011000995504101^SB
但当我回音时,它又回来了

♦011000995504101^SB
我想要和我在URL中传递的值完全相同的值

我尝试过使用urlencode()函数,但它会给我这样的输出

%B6011000995504101%5ESB
请帮助我了解这一点

回答: 要发送
%
登录url,请改为发送
%25

在您的情况下,为了让php看到百分号,必须将字符串
%25B6011000995504101^SB
传递给服务器

为什么?
在URL中,百分号具有特殊含义。用于对特殊字符进行编码。例如,
&
是参数之间的分隔符,因此如果希望参数实际包含一个
&
,请改为编写
%26
。因为百分号用于对特殊字符进行编码,所以它也是一个特殊字符,因此如果您想实际发送百分号,则必须对其进行编码。百分号的编码是
%25

在URL中包含原始字符串之前,最好将其通过URL编码,如下所示:

<?php
$original='%B6011000995504101^SB';

$updated=urlencode($original);

echo "<a href=\"some_page.php?$updated\">Link here</a>";
?>

接收页面将知道该做什么-请在您的Web服务器上尝试此示例:

<?php

if($_GET['argument']) {
    echo "<p>You passed in the argument &quot;$_GET[argument]&quot;</p>";
}else {
    echo "<p>No argument was passed.</p>";
}
$original='%B6011000995504101^SB';

$updated=urlencode($original);

echo "<a href=\"urlencode.php?argument=$updated\">Link here</a>";
?>


(将文件命名为urlencode.php

使用url_encode()和url_decode()也可能需要htmlentities()%B6例如,是您得到的blob的代码。传递%实际上是一个非常糟糕的主意。您最好为%传递一个不同的字符,或者根本不传递它,并假设%始终在那里,然后在脚本中指定它。%n用于urlencode,最好传递一个特定的模式,如$$或其他内容,并在php代码中对其进行解码。可能的重复会增加另外25个,如%2525Awesome!!因为这个问题我一直在折磨自己。。。THXI如果以%2525结尾,则表示您意外地对字符串进行了两次编码。找出编码发生的位置,并删除/避免其中一个。这是一个非常好的实践