2012-05-15 88 views
2

我正在做一个涉及一个留言箱的学校作业。一个伟大的教程,使用jQuery,Ajax,MySQL和PHP。现在我遇到了一个小问题,下面这句话:撇号php问题

$result .= "<li><strong>".$row['user']."</strong><img src="\" alt="\"-\"" />".$row['message']." <span class="\"date\"">".$row['date']."</span></li>";} 

我想知道是否有人可以找出它为什么会给出错误。到目前为止,我得出了这个结论$row['message']然后它认为其余的代码作为一个字符串。所以这可能是一个撇号问题。

+0

看StackOverflow的方式编辑器中已突出显示您的代码。看看你希望实际显示为'$ result'的''''内容颜色的位置已经改变了,这应该有助于你弄清楚为什么你的代码会抛出错误 – PenguinCoder

回答

5

只是为了让您的生活更轻松的缘故:使用'为PHP和"为HTML这样的:

$result .= '<li><strong>'.$row['user'].'</strong><img src="" alt=""/>'.$row['message'].' <span class="date">'.$row['date'].'</span></li>'; 

敢肯定你应该明白我的意思。

+1

这是一个恕我直言,最清晰的解决方案。如果行尚未过滤(我猜的名字),那么你可能会喜欢用'htmlspecialchars )'为了防止XSS攻击 – YMMD

+0

是的绝对同意,但我很确定问题本身的背景并不在防范攻击的层面,也没有被问到这个问题。 asker :) –

+0

我打算查看htmlspecialchars()。谢谢你的提示。这似乎是解决方法,至少我会在3分钟内接受:) –

1
$result .= "<li><strong>{$row['user']}</strong><img src='http://www.' alt='My Alt Tag' />{$row['message']}<span class='date'>{$row['date']}</span></li>"; 

你通过进出报价混乱的自己 - 你可以用变量与{}迫使插在这种情况下。

+0

这似乎解决了这个问题。其他问题,但我会自己尝试。谢谢你。 –

0
$result .= "<li><strong>".$row['user']."</strong><img src='' alt='-'/>".$row['message']." <span class='date'>".$row['date']."</span></li>";} 

避免使用“字符串的内部 - 它很容易了解转义特殊字符忘记相反的。”使用”。 再说 - 你用“只有当有任何PHP这个字符串中解析必要如

$var1 = 1; 
$test = "$var1"; //evaluates to '1' 
$test = '$var1'; //evaluates to '$var1' 
0

看来,你试图逃跑的报价,使你的工作更难在PHP中一个很大的特点为HTML输出。使用引号中的字符串,使您不必担心转义双引号请参考PHP Manual for Strings

换句话说,你的行变成了:。

$result .= '<li><strong>' . $row['user'] . '</strong><img src="" alt="-" />' . $row['message'] . 
      '<span class="date">' . $row['date'] . '</span></li>' . 
      '<li><strong>' . $row['user'] . '</strong><img src="" alt="-" />' . $row['message'] . 
      '<span class="date">' . $row['date'] . '</span></li>';