PHP urlencode中的循环


PHP urlencode in a loop?

我是php编程新手,所以请耐心等待。我有一小段代码,从0到9进行while循环,提供到页面的链接,并向url添加一些代码,作为第2页url的get数据。

<?php $link_name = "Page 2"; ?>
<?php $company = "Super & Sprunklers"; ?>
<?php $id = 0; 
    while ($id <=10) {
        if ($id < 10) {
        echo "<a href='"page2.php?id={$id}&company={$company}'">{$link_name}?id={$id}&company={$company}</a>";
    echo "<br />";
        } else {
    echo "<a href='"page2.php'">{$link_name}</a>";
        }
    $id++;
    }
?>

此操作有效,并为该页生成以下链接:

Page 2?id=0&company=Super & Sprunklers
Page 2?id=1&company=Super & Sprunklers
Page 2?id=2&company=Super & Sprunklers
Page 2?id=3&company=Super & Sprunklers etc... to id=9
Page 2

然而,当我看第2页,看到我分配$id和$company的两个变量的get数组,因为"&"我需要更改密码。这是我的第2页的代码,我得到一个警告,当页面加载没有变量,所以我给他们空值在第2页。

<pre>
<?php 
//print_r ($_GET);
//print_r ($GLOBALS);
$id = "";
$company = "";
if (isset($_GET['id'])) {$id = $_GET['id'];}
if (isset($_GET['company'])) {$company = $_GET['company']; }
echo $id." ".$company;
?>
</pre>

但是页面返回0 Super

"&"之后的所有内容都缺失了。

我的问题是如果{$company}已经在echo语句中,我如何添加urlencode函数。我已经做了这段代码,使其工作:

$companyencoded = urlencode($company); 

并补充

echo "<a href='"page2.php?id={$id}&company={$company}

echo "<a href='"page2.php?id={$id}&company={$companyencoded}

但这涉及到一个新的变量,当我看$_GET的数组在第2页变量$companyencoded不存在吗?

你能解释一下我做错了什么吗?

Many Thanks Asa

你已经在第一个位置编码,需要在第二个位置解码

<?php $link_name = "Page 2"; ?>
<?php $company = "Super & Sprunklers";
$url= urlencode("Super & Sprunklers");?>
<?php $id = 0; 
    while ($id <=10) {
        if ($id < 10) {
        echo "<a href='"page2.php?id={$id}&company={$url}'">{$link_name}?id={$id}&company={$company}</a>";
    echo "<br />";
        } else {
    echo "<a href='"page2.php'">{$link_name}</a>";
        }
    $id++;
    }
?>

中的url我已经编码了字符。并且可以解码page2.php

    <pre>
<?php 
$id = "";
$company = "";
if (isset($_GET['id'])) {$id = $_GET['id'];}
if (isset($_GET['company'])) {$company = $_GET['company']; }
echo $id." ".  urldecode($company);
?>
</pre>

cheers peace of cake

这是一个有效的答案

<?php $link_name = "Page 2"; ?>
<?php $company = "Super & Sprunklers"; 
  $company = urlencode($company); ?>
<?php $id = 0; 
    while ($id <=10) {
        if ($id < 10) {
        echo "<a href='"page2.php?id={$id}&company={$company}'">{$link_name}?id={$id}&company=".urldecode($company)."</a>";
    echo "<br />";
        } else {
    echo "<a href='"page2.php'">{$link_name}</a>";
        }
    $id++;
    }
?>

为了让页2正确显示正确的数组。非常感谢大家。这行代码让我很困惑,$company = urlencode($company)。我想这就像在电子表格中做一个循环引用。

其实很简单。

在传递公司名称作为查询字符串时使用urlencode()。在page2上,确保urldecode()该值

这是你的网址:

echo "<a href='"page2.php?id={$id}&company=".urlencode($company)."'">{$link_name}?id={$id}&company={$company}</a>";

$company = urldecode($_GET['company']);