处理&;amp作为URL中的字符


Handling &amp as character in URL

我正在制作一个学习编码的网站,并正在制作一份搜索网站。搜索为$q

$q = ucwords(mysql_real_escape_string(trim($_REQUEST['q'])));

然后我试着把一个链接到用户可能想要搜索的其他单词。不幸的是,如果一个词是"Example&Another Example",那么$q只是"Example(示例)",其余的都被省略了。在url中,这是有效的(因为没有遗漏任何内容)示例+%26+另一个+示例但这不起作用示例%20&%20另一个例子.

我尝试使用str_replace将所有的&amp替换为%26,但它只是生成了$q = null。怎么了?

这是我的代码:

echo "<hr /><span><strong>Refine Search</strong><br/><br/>";
$result = mysql_query("SELECT * FROM subcat WHERE catnumber='1' LIMIT 0,10");
$subcaturl = str_replace("&amp;", "%26", $row['subcat']);
while($row = mysql_fetch_array($result))
{
    echo "<a href='search.php?q=". $subcaturl ."'/>" . $row['subcat'] ."</a>";
    echo "<br />";
}

尝试urlencode:

$subcaturl = urlencode($row['subcat']);

看看urlencode/urldecode,这将有助于解决这个问题。

PHP将处理'&'作为新参数的开始。为了获得"&"作为q字符串的一部分,用户提交的数据需要转义为"&"然后放置在URL字符串中。

你可以举个例子:

str_replace ('&", "-", $row['subcat']);

你也可以尝试编码和解码url

urlencode($row['subcat']);
urldecode($row['subcat']);