我在html页面上有以下图像列表,我将转换为php以从mysql数据库驱动。虽然我认为这是一个足够简单的程序 - 我正在努力避免语法错误,因为在我的代码中现有使用'。
我需要根据数据库中的内容将简单的图像列表转换为数组。 html列表是:
<li><a href='javascript:void(0);' rel="{gallery: 'gal1', smallimage: './imgProd/2.jpg',largeimage: './imgProd/2.jpg'}">
<img src='imgProd/2.jpg' style="width:110px; height:110px;"></a></li>
<li><a href='javascript:void(0);' rel="{gallery: 'gal1', smallimage: './imgProd/3.jpg',largeimage: './imgProd/3.jpg'}">
<img src='imgProd/3.jpg' style="width:110px; height:110px;"></a></li>
<li><a href='javascript:void(0);' rel="{gallery: 'gal1', smallimage: './imgProd/4.jpg',largeimage: './imgProd/4.jpg'}">
<img src='imgProd/4.jpg' style="width:110px; height:110px;"></a></li>
我正在尝试使用:
从php生成这个 <?php
$result = mysql_query("SELECT * FROM table WHERE id='$id'");
while($row = mysql_fetch_array($result))
{
echo '<li>';
echo '<a href='javascript:void(0);' rel="{gallery: 'gal1', smallimage: './' . $row['photo'] . '',largeimage: './' . $row['photo'] . ''}">';
echo '<img src=' . $row['photo'] . '' style="width:110px; height:110px;">';
echo '</a>';
echo '</li>';
}
?>
但是当我试图在单引号中使用单引号时,显然会出现大量语法错误(我假设!?)。有谁知道我如何将这个列表纳入数组?
非常感谢
JD
答案 0 :(得分:1)
你是对的,你不能在单引号字符串中使用单引号,你需要使用双引号,或用反斜杠转义它们 - 即
echo '<a href=\'javascript:void(0);\' rel="{gallery: \'gal1\', smallimage: \'./' . $row['photo'] . '\',largeimage: \'./' . $row['photo'] . '\'}">';
反斜杠告诉PHP将以下引号字符视为字符串中的字符,而不是字符串的结尾。
答案 1 :(得分:1)
你在搞乱报价。 PHP对JS或HTML一无所知,yoiu必须逃避引用。方法如下:
[...]
echo '<a href=\'javascript:void(0);\' rel="{gallery: \'gal1\', smallimage: \'./' . $row['photo'] . '\',largeimage: \'./' . $row['photo'] . '\'}">';
echo '<img src=\'' . $row['photo'] . '\' style="width:110px; height:110px;">';
[...]
了解更多信息:请参阅http://php.net/string
答案 2 :(得分:1)
使用HEREDOC s:
echo <<<EOL
<li>
<a href="javascript:void(0);" rel="{gallery: 'gal1', smallimage: './{$row['photo']}' , largeimage: './{$row['photo']}'}">
<img src="{$row['photo']}" style="width:110px; height:110px;">
</a>
</li>
EOL;
Presto magico!没有更多的报价问题。
答案 3 :(得分:1)
作为一般经验法则,HTML服务器端的构建块通常是一个坏主意。请尝试使用这种语法......
while($row = mysql_fetch_array($result)) : ?>
<li>
<a href="javascript:void(0)">
<img src="<?php echo htmlspecialchars($row['photo']) ?>" style="...">
</a>
</li>
<?php endwhile ?>
答案 4 :(得分:1)
转义引号是一个坏主意。
您可以简单地关闭并重新打开<?php ?>
代码,也可以使用Heredoc syntax。
使用标签(PHP是一种模板语言,任何不在<?php ?>
标签之间的内容都将完全按照原样发送给客户端):
<?php
$result = mysql_query("SELECT * FROM table WHERE id='$id'");
while($row = mysql_fetch_array($result))
{
?>
<li>
<a href='javascript:void(0);' rel="{gallery: 'gal1', smallimage: './<?php echo $row['photo']; ?>',largeimage: './<?php echo $row['photo']; ?>'}">
<img src='<?php echo $row['photo']; ?>' style="width:110px; height:110px;">
</a>
</li><?php
}
?>
使用Heredoc(结束HTML;
应该在线上,不缩进):
<?php
$result = mysql_query("SELECT * FROM table WHERE id='$id'");
while($row = mysql_fetch_array($result))
{
echo <<<HTML
<li>
<a href='javascript:void(0);' rel="{gallery: 'gal1', smallimage: './{$row['photo']}',largeimage: './{$row['photo']}'}">
<img src='{$row['photo']}' style="width:110px; height:110px;">
</a>
</li>
HTML;
}