如果值为“&”,则值不会传递到下一页

时间:2014-03-06 23:52:52

标签: php

我正在将数据库查询的值从链接传递到另一个页面。如果该值存在“&”然后它不会传递到下一页,例如,如果值是“ABC $ DEF”。我下一页只收到ABC?我该如何解决?

foreach ( $data as $row ){
        $str .= <<<End_Of_String

        <tr> 
          <td style='font-size:14px; text-align:left; border:1px solid;background-color:#E6E6E6;padding:3px 7px 2px 7px'><a class='{$this->htmlD_repairList}'  href='create-graphs-client.php?{$this->htmlID_type}={$this->type_generategraphs}&{$this->htmlID_clietName}=".urlencode($row->clientName)."'>{$row->clientName}</a> </td>



End_Of_String;
}


function getRepairName() {
    if (isset ( $_GET [$this->htmlID_clientName] ))
    {
        return urldecode( $_GET [$this->htmlID_clientName]);
    }
}

在另一个功能中             $ repair_name = $ this-&gt; getRepairName();         print $ repair_name;

如果客户端名称是“Tom&amp; Bob”,我只在create-graphs-client.php页面中获取Tom。

2 个答案:

答案 0 :(得分:3)

为此目的使用PHP的方法urlencode()

"...{$this->htmlID_clientName}=".urlencode($row->clientName)."'>..."

如手册中所述,您可以使用urldecode()对其进行解释并再次获取&和所有其他特殊符号。


另一个提示,你可以使用sprintf()并摆脱像这样丑陋的HTML和PHP混合

$link = sprintf("<a href='create-graphs-client.php?%s=%s&%s=%s'>%s</a>",
    $this->htmlID_type,
    urlencode($this->type_generategraphs),
    $this->htmlID_clientName,
    urlencode($row->clientName),
    $row->clientName);

现在更容易阅读,因为HTML和PHP(及其逻辑)是分开的。

答案 1 :(得分:0)

foreach ( $data as $row )
        {
            $clientencode = urlencode($row->clientName);
            $htmlent_repair  = htmlentities($clientencode);
            $str .= <<<End_Of_String

            <tr> 
              <td style='font-size:14px; text-align:left; border:1px solid;background-color:#E6E6E6;padding:3px 7px 2px 7px'><a class='{$this->htmlD_repairList}'  href='create-graphs-client.php?{$this->htmlID_type}={$this->type_generategraphs}&{$this->htmlID_clientName}=$htmlent_repair '>{$row->clientName}</a> </td>

            </tr>               


End_Of_String;
        }