0

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

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

然后我试图将链接指向用户可能想要搜索的其他单词。不幸的是,如果一个单词是“Example & Another Example”,$q则只有“Example”,其余的都被省略了。在 url 这有效(因为没有遗漏任何内容)example+%26+another+example 但这不起作用 Example%20&%20Another Example 。

我尝试使用 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 />";
}
4

3 回答 3

2

尝试urlencode

$subcaturl = urlencode($row['subcat']);
于 2012-07-23T16:30:20.447 回答
1

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

于 2012-07-23T16:29:30.230 回答
0

PHP 会将 '&' 视为新参数的开头。为了将 '&' 作为 q 字符串的一部分,用户提交的数据需要在放入 URL 字符串之前转义 '&'。

你可以这样做作为一个例子:

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

您也可以尝试对网址进行编码和解码

urlencode($row['subcat']);
urldecode($row['subcat']);
于 2012-07-23T16:33:56.130 回答