我正在将数据库查询的值从链接传递到另一个页面。如果该值存在“&”然后它不会传递到下一页,例如,如果值是“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。
答案 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;
}