在 URL 重写模式下的 GET 请求中,句点“.”不会进入 PHP 变量 [关闭]
Posted
技术标签:
【中文标题】在 URL 重写模式下的 GET 请求中,句点“.”不会进入 PHP 变量 [关闭]【英文标题】:Period " . " doesn't come into PHP variable in GET requests in URL Rewriting mode [closed] 【发布时间】:2018-08-20 09:38:55 【问题描述】:当我从浏览器 URL 栏中输入一个值时,该值通过 GET 请求进入一个 php 变量并按预期显示该值,但这里的问题是当我输入一个带有句点 的值时。 在值的末尾,仅显示值,但不显示句点。如何解决这个问题?我希望它显示带有句点的值。 以下是我的代码:
if (isset($_GET['value'])) // value comes from the browser URL bar
$val = $_GET['value'];
echo $val;
问题更新 我忘了提到我正在使用 URL 重写模式,当我通过 URL 重写模式获取值时会发生这种情况。但是,当我从包含参数名称 (index.php?value=) 的原始 URL 获取值时,点会按预期显示。
页面名称 index.php
if (isset($_GET['value'])) // value comes from the browser URL bar
$val = $_GET['value'];
echo $val;
我的 .htaccess 文件
RewriteEngine On
RewriteRule ^index/([a-z0-9_/.]+)/?$ /review/index.php?value=$1 [L]
查看第一个输出:如果我将句点放在值的末尾,则仅显示该值。但在示例二中:如果我在值的中间包含句点,则该值与句点一起显示。为什么会这样?
输出
【问题讨论】:
请说明您是如何传递网址的。您对参数进行 urlencode 吗? 请添加给出的 URL 示例、预期内容和收到的内容。 我不是通过php传值,我是直接从浏览器网址栏传过来的 @AnthonyB 好的。等一下 你会得到一个带有该代码的PHP Parse error
,在echo $val
中缺少一个;
【参考方案1】:
我有一个解决方案。因为我没有得到值末尾的句点,所以我想出了一个使用 PHP 的 SERVER 变量的解决方案。我通过$_SERVER['REQUEST_URI'] 获取当前页面的完整网址,然后分解它们并获取查询字符串。下面是它的方法。
<?php
$getQueryString = explode("/",$_SERVER['REQUEST_URI']);
echo getQueryString[3];
下面是我在值末尾得到句点的输出。见
【讨论】:
如果你正在寻找数组的最后一部分,你会使用end($getQueryString)
,所以即使你在结尾之前添加一个部分,你的代码也会继续工作。
另外,我已经在我的本地复制了您的问题中的整个示例,使用域 .htaccess,并且效果很好。
@AnthonyB 你是什么意思?您是否尝试了我在问题中添加的整个示例,然后它对您很有效?你的意思是当你输入一个以句点结尾的值时,你可以在浏览器中看到它和句点作为输出?
我使用 PHP 7.2.2 在我的 MAMP 实例上创建了一个域“sotest.local”。我创建了一个文件index.php
,并使用了您的.htaccess
文件。所以例子是一样的。我已经用参数truc.
进行了测试,最后有一个句点,句点在变量中。我在浏览器中看到过。
@AnthonyB 那你知道我的浏览器没有出现的原因吗?我记得有人还说这个也很适合他们以上是关于在 URL 重写模式下的 GET 请求中,句点“.”不会进入 PHP 变量 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章