我正在建立一个网站来学习编码并正在建立一个搜索网站。搜索结果为$q
。
$q = ucwords(mysql_real_escape_string(trim($_REQUEST['q'])));
然后我试图将链接添加到用户可能想要搜索的其他单词。不幸的是,如果一个单词是“示例和另一个示例”,$q
只是“示例”,其余部分则被省略。在网址中这是有效的(因为没有遗漏)示例+%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 />";
}
答案 0 :(得分:2)
尝试urlencode:
$subcaturl = urlencode($row['subcat']);
答案 1 :(得分:1)
看看urlencode / urldecode - 这将有助于解决这个问题。
答案 2 :(得分:0)
PHP会对待'&amp;'作为新参数的开头。 为了得到'&amp;'作为q字符串的一部分,用户提交的数据需要转义为“&amp;”在放入URL字符串之前。
您可以这样做:
str_replace ('&", "-", $row['subcat']);
您也可以尝试编码和解码网址
urlencode($row['subcat']);
urldecode($row['subcat']);