在php echo语句中的img标记中使用onmouseover时出错


Error when using onmouseover within an img tag within a php echo statement

我一直在尝试制作一个按钮,用鼠标滚动后会变成不同的图像,但echo命令中的代码导致了一些复杂情况。这是我尝试使用的php代码,否则它只会在onmouse函数被删除时显示图像:

if ($pg > 0) { echo ('<div class="next"><a href="?pg='.($pg-1).'"><img src="/images/prevpage.gif" onmouseover="this.src='/images/prevpagehl.gif';" onmouseout="this.src='/images/prevpage.gif';"/></a></div>'); }

使用此代码会导致出现以下错误:

分析错误:语法错误,第145行上/home/wintblxq/public_html/index.php中出现意外的T_CONSTANT_ENCAPSED_STRING

我可以对语法进行任何更改以使其正常运行吗?或者我需要尝试一种新的方法吗?

您需要转义您的报价(实际上是您的报价):

if ($pg > 0) { 
    echo '<div class="next"><a href="?pg='.($pg-1).'"><img src="/images/prevpage.gif" onmouseover="this.src=''/images/prevpagehl.gif'';" onmouseout="this.src=''/images/prevpage.gif'';"/></a></div>'; 
}

您需要转义onmouseoveronmouseout中的单引号javascript:

if ($pg > 0) 
{ 
    echo ('<div class="next"><a href="?pg='.($pg-1).'"><img src="/images/prevpage.gif" onmouseover="this.src=''/images/prevpagehl.gif'';" onmouseout="this.src=''/images/prevpage.gif'';"/></a></div>'); 
}

PHP把这些和字符串的末尾混淆了。

您首先需要使用Backslash示例来转义单引号:

<?php echo '<p onmouseover="alert('''SIngle Quotes''');">YAY</p>';

编写和查看php的一种更简单的方法(在我看来)是将HTML与php分离。这里有你的代码,我会怎么写。

<?php if ($pg > 0) { // PHP Scripts ?>
    <!-- HTML Tags and text -->
    <div class="next"><a href="?pg=<?php $pg-1  // MORE PHP CODE WITHIN HTML ?>"><img src="/images/prevpage.gif" onmouseover="this.src='/images/prevpagehl.gif';" onmouseout="this.src='/images/prevpage.gif';"/></a></div>
 <?php }  ?>

这样你就不必担心逃避所有的单引号,而且你可以看到它更好。