我想显示link
个图片,他们的title
属性来自MySQL数据库:
for ($i=0; $i<$ret['cnt']; $i++)
{
$html .= "<td width='15'><a href='" . HTTP_MAIN . $ret[$i]['menu_url'] . "?action=".$ret[$i]['menu_action']."'><img src='" . HTTP_ICONES . $ret[$i]["menu_icone_img"] . "' title='".$ret[$i]["menu_icone_title"] . "' width='12' height='12'></a></td>";
}
正如您所见,title属性来自$ ret [$ i] [“menu_icone_title”]。这是查询:
$sSQL = "SELECT menu_icone_img, menu_icone_title, menu_url, menu_action
FROM menu
WHERE menu_icone_flag = 1
ORDER BY menu_icone_ordre";
$this->db->query($sSQL) ;
$ret['cnt'] = $this->db->num_rows();
$i = 0;
while ( $this->db->next_record() ) {
$ret[$i]["menu_icone_img"] = stripslashes($this->db->f('menu_icone_img'));
$ret[$i]["menu_icone_title"] = stripslashes($this->db->f('menu_icone_title'));
$ret[$i]["menu_url"] = stripslashes($this->db->f('menu_url'));
$ret[$i]["menu_action"] = stripslashes($this->db->f('menu_action'));
$i++;
}
问题是“menu_icone_title”列内有撇号,如Initialisation des niveaux d'activités
因此,在运行时,工具提示已被破坏:Initialisation des niveaux d
。
那么如何显示所有文字?
答案 0 :(得分:2)
只需替换:
$ret[$i]["menu_icone_title"]
通过
str_replace("'","\\'",$ret[$i]["menu_icone_title"]);
答案 1 :(得分:0)
HTML应该在任何PHP之外。 E.g。
<?php
function cleantext ($string) {
return htmlentities($string);
}
for ($i=0; $i<$ret['cnt']; $i++)
{
?>
<td width="15">
<a href="<?php echo HTTP_MAIN . cleantext($ret[$i]['menu_url']); ?>?action=<?php echo $ret[$i]['menu_action'];?>">
<img src="<?php echo HTTP_ICONES . cleantext($ret[$i]["menu_icone_img"]); ?>" title="<?php echo cleantext($ret[$i]["menu_icone_title"]); ?>" width="12" height="12" />
</a>
</td>
<?php
}
?>
它使您的代码更易于阅读/维护。
我还在任何输出周围添加了一个函数,它会为你清理输出。目前所有这个功能都在对字符串执行htmlentites,但是如果/需要的话,您可以轻松扩展它。