PHP-GET方法向URL添加了不必要的添加符号



我在Stack Overflow中查找了PHP的推荐方法类型;GET或POST方法。根据社区的建议,GET方法似乎是一个为简单搜索引擎传递查询的好主意。

不幸的是,GET方法在URL中添加了不必要的添加符号来表示空格。基本上,这是一个美学问题。

我尝试了trim()函数来减少空格,但是,只有在提交数据并且已经用参数设置了URL之后才调用它。

这是一个index.php文件,我认为它与我不合作。

<?php $query = ""; ?>
<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <form action="index.php" method="GET">
            <input type="text" name="query" placeholder="Enter Query">
            <input type="submit" text="Search">
        </form>
        <?php
            $query = $_GET['query'];
            print $query;
        ?>
    </body>
</html>

如果需要,举个例子。如果我在搜索栏中键入此查询。。。

sample 1

URL将以这种方式形成。。。

http://localhost/search/index.php?query=sample++++++++++++++1

有没有办法解决这个问题,或者POST方法是规避这个问题的唯一方法?

您将需要使用POST方法。

 <!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="index.php" method="POST">
        <input type="text" name="query" placeholder="Enter Query">
        <input type="submit" text="Search">
    </form>
    <?php
        $query = $_GET['query'];
        print $query;
    ?>
</body>
</html>

使用urlencodestr_replaceurlencode将用加号替换所有空格,使用str_replace可以用加号替换下划线,也可以用减号替换空格。

用下划线替换空格:str_replace(' ', '_', $url);

URL编码您的$_GET*:urlencode($url);