【问题标题】:Passing along variable inside link works only on first word in multiple-word-variables, why?在链接中传递变量仅适用于多词变量中的第一个词,为什么?
【发布时间】:2012-12-25 10:22:54
【问题描述】:

我在下面有这段代码。如您所见,我将两个变量与链接一起传递。 第二个变量 (category) 只要包含一个单词就可以工作,但某些类别是两个或更多单词,然后在我获取变量的接收 php 页面上只获取第一个单词。

示例:我传递这个:Rims & Tires 只有这个通过:Rims

$display_table .= "<a href='../ad.php?ad_id=$row[ad_id]&category=$row[category]' target='_parent'>";

这是我如何在接收的 php 文件(链接所在的文件)中获取它:

$cat = $_GET['category'];
echo $cat; //displays only first word of multiple word categories.

【问题讨论】:

  • 我很不安,到目前为止 4 个答案都没有提到用 &amp;amp; 替换 &amp; (可能除了 tvanfosson,虽然它不明确)跨度>

标签: php html variables


【解决方案1】:

您需要使用正确的编码。查询数据使用urlencode:

"<a href='../ad.php?ad_id=".urlencode($row['ad_id'])."&category=".urlencode($row['category'])."' target='_parent'>"

而且由于属性值内的&amp;也需要正确编码(使用htmlspecialchars):

"<a href='".htmlspecialchars("../ad.php?ad_id=".urlencode($row['ad_id'])."&category=".urlencode($row['category']))."' target='_parent'>"

生成正确的代码会使事情变得更加困难,并且在使用上面的变体时可能也更加难以理解。但是您可以像这样拆分步骤:

$row['ad_id'] = urlencode($row['ad_id']);
$row['category'] = urlencode($row['category']);
$href = htmlspecialchars("../ad.php?ad_id=$row[ad_id]&category=$row[category]");
$display_table .= "<a href='$href' target='_parent'>";

如果 ad_id 总是一个数值,你甚至不需要在其上应用urlencode

【讨论】:

  • 我的第一个建议使用 ENT_QUOTES 引号样式替换是不必要的,因为 urlencode 已经替换了单引号。
【解决方案2】:

应该这样做:

$display_table .= "<a href='../ad.php?ad_id=".urlencode($row[ad_id])."&category=".urlencode($row[category])."' target='_parent'>";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2012-12-05
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多