处理&作为URL中的字符

时间:2012-07-23 16:23:48

标签: php url

我正在建立一个网站来学习编码并正在建立一个搜索网站。搜索结果为$q

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

然后我试图将链接添加到用户可能想要搜索的其他单词。不幸的是,如果一个单词是“示例和另一个示例”,$q只是“示例”,其余部分则被省略。在网址中这是有效的(因为没有遗漏)示例+%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 />";
}

3 个答案:

答案 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']);