我正在制作一个学习编码的网站,并正在制作一份搜索网站。搜索为$q
。
$q = ucwords(mysql_real_escape_string(trim($_REQUEST['q'])));
然后我试着把一个链接到用户可能想要搜索的其他单词。不幸的是,如果一个词是"Example&Another Example",那么$q
只是"Example(示例)",其余的都被省略了。在url中,这是有效的(因为没有遗漏任何内容)示例+%26+另一个+示例但这不起作用示例%20&%20另一个例子.
我尝试使用str_replace将所有的&
替换为%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("&", "%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']);