我在这里遇到了一个磕磕绊绊,我成功地从网站返回数据,但随后来自该网站的超链接以文本而不是链接的形式返回。我想知道是否有任何方法可以将其作为链接返回。还可以在超链接中显示信息吗?
<div data-role="content">
<div class="content-primary">
<?php
$query = 'http://query.yahooapis.com/v1/public/yql?q=Select%20*%20From%20rss%20where%20url%3D%22http%3A%2F%2Fworldoftanks.com%2Fnews%2Frss%2F%22&diagnostics=true';
$xml = simplexml_load_file($query);
//var_dump($xml);
echo '<h2>World of Tank News</h2>';
//iterate over query result set
$results = $xml->results;
foreach ($results->item as $r){
echo $r->title . "<br />";
echo $r->link . "<br /><br />";
}
?>
</div>
而不是做:
echo $r->link . "<br /><br />";
这样做:
echo "<a href='"" . $r->link . "'">" . $r->link . "</a>";
也许你应该使用
foreach ($results->item as $r){
echo "<a href='"" . $r->link . "'">" . $r->title . "</a><br /><br />";
}
对于以这种方式回显 HTML 标签,我更喜欢使用 printf()
:
printf(
'<a href="%s">%s</a>'
, htmlentities($r->link)
, htmlentities($r->title)
);
printf()
采用一个字符串,并在替换特殊格式的令牌后对其进行echo
。 在上面的示例中,字符串中有两个标记,它们都表示为 %s
。
当printf()
运行时,它会将每个令牌替换为相应的参数。 在上面的例子中,第一个%s
被htmlentities($r->link)
的结果替换,第二个%s
被htmlentities($r->title)
的结果替换。
sprintf()
手册页更详细地介绍了令牌的工作原理,并有更多示例(sprintf()
和printf()
相同,只是sprintf()
返回格式化字符串,而printf()
直接输出)。