抱歉,如果这看起来像是重新发布,但今天早些时候我发布了这个问题:PHP for an image gallery pull from facebook, only grabs the first 25 images
我忘了问我认为这是一个小问题。在此处显示的 echo htmlentities 标记上:
echo htmlentities ('<li class="imgcomments">
<a href="http://www.facebook.com/people/@/'.$Cdata->from->id.'" target="_blank">
<img src="https://graph.facebook.com/'.$Cdata->from->id.'/picture"
align=left border=0 />
</a>
<a href="http://www.facebook.com/people/@/'.$Cdata->from->id.'" target="_blank">
<b>'.$Cdata->from->name.'</a>: </b>'.$Cdata->message.'<br />
<div align="left" style="padding-bottom:10px;">
<small> Posted '.timeSince(strtotime($Cdata->created_time)).' ago</small></div> </li>');
每当我将鼠标悬停在没有评论的图像上时,都没有问题,因为在此代码之后有一个 else 显示“没有评论”。但是当我将鼠标悬停在一个确实有评论的地方时,我得到的结果与 img 标题属性相同,但它显示了此处链接的整个 html 代码。我已经尝试过 htmlspecialchars 并且还使用带有 title="" 的 span 包装了所有 html 代码。
编辑:我发现了错误,现在我看到了修复它的方法。问题出在代码之前:
echo '<li><a href="'.$data->source.'" rel="lightbox" title="';
if (property_exists($data, "comments")) {
foreach ( $data->comments->data as $Cdata )
{
echo htmlentities ('<li class="imgcomments">
<a href="http://www.facebook.com/people/@/'.$Cdata->from->id.'" target="_blank">
在第一行,title 属性使它显示整个 html 代码,我假设我将不得不求助于 if/else 语句,但如果其他人有更好的主意......