如何从我从带有php的网站获得的数据中创建超链接


How to create a hyperlink from the data I get from a website with php

我在这里遇到了一个磕磕绊绊,我成功地从网站返回数据,但随后来自该网站的超链接以文本而不是链接的形式返回。我想知道是否有任何方法可以将其作为链接返回。还可以在超链接中显示信息吗?

<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()运行时,它会将每个令牌替换为相应的参数。 在上面的例子中,第一个%shtmlentities($r->link)的结果替换,第二个%shtmlentities($r->title)的结果替换。

sprintf()手册页更详细地介绍了令牌的工作原理,并有更多示例(sprintf()printf()相同,只是sprintf()返回格式化字符串,而printf()直接输出)。