php echo href ='javascript:void(0);'

时间:2011-10-18 21:39:54

标签: php javascript mysql

我在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

5 个答案:

答案 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;
}