0

这是我正在使用的代码:

<?php
    $rss = new DOMDocument();
    $rss->load('http://hugeriver.wordpress.com/feed/');
    $feed = array();
    foreach ($rss->getElementsByTagName('item') as $node) {
        $item = array ( 
            'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
            'desc' => $node->getElementsByTagName('encoded')->item(0)->nodeValue,
            'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
            'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
            );
        array_push($feed, $item);
    }
    $limit = count($feed);
    for($x=0;$x<$limit;$x++) {
        $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
        $link = $feed[$x]['link'];
        $description = $feed[$x]['desc'];
        $date = date('l F d, Y', strtotime($feed[$x]['date']));
        echo '<h2><a name="test">'.$title.'</a><span class="line"></span></h2>';
        echo '<small><em>Posted on '.$date.'</em></small></p>';
        echo '<p>'.$description.'</p>';
    }
?>

我特别坚持这条线。我正在尝试使它的标题既是锚的名称又是链接的名称(因此单击时它会滚动到顶部)。这是我尝试过的不起作用。谁能告诉我我的语法有什么问题?

echo '<h2><a name="'.$title'" href="#'.$title'">'.$title.'</a><span class="line"></span></h2>';
4

6 回答 6

3

您当前正在创建一个以自身为目标的链接。

如果您希望链接在单击时转到文档顶部,只需链接到'#'

<a href="#" name="<?php echo $title ?>"><?php echo $title ?></a>

此外,在 HTML 5name中的元素上已弃用<a/>。改用id

<a href="#" id="<?php echo $title ?>"><?php echo $title ?></a>
于 2013-07-15T14:27:10.000 回答
1

安德烈的回答应该可以解决您的问题,如果您想做的只是转到页面顶部。但是,如果您想转到 id 设置为 $title 值的特定部分,那么您可以试试这个...

<a href="#<?php echo $title ?>" name="<?php echo $title ?>"><?php echo $title ?></a>

这样,当单击链接时,它将跳转到 ID 等于标题的确切元素(可能在顶部,也可能不在顶部)。我相信这是您想要实现的目标。

于 2013-07-15T14:39:30.900 回答
1
<a href="#" ID="<?php echo htmlentities($title, ENT_QUOTES); ?>">
    <?php echo htmlentities($title, ENT_NOQUOTES); ?></a>

为什么每个人都忘记htmlentities()了,尤其是属性?

为什么使用$titleas #target?当$title是一个带有空格和标点符号的变量不适合#target练习时...为什么不使用 an ,md5($title)因为您是动态生成页面的?喜欢:

<a href="#" ID="<?php echo htmlentities(md5($title), ENT_QUOTES); ?>">
    <?php echo htmlentities($title, ENT_NOQUOTES); ?></a>

后来像这样链接到它:

<a href="#<?php echo htmlentities(md5($title), ENT_QUOTES); ?>">
    Go to <?php echo htmlentities($title, ENT_NOQUOTES); ?>!</a>
于 2013-07-15T14:37:39.990 回答
0

试试这个语法

echo "<h2><a name=\"$title\" href=\"#$title\">$title</a><span class=\"line\"></span></h2>";

或者

echo "<h2><a name='$title' href='#$title'>$title</a><span class='line'></span></h2>";

这更清晰,丢失点或关闭/打开引号的可能性更小。

于 2013-07-15T14:30:55.937 回答
0

有两个缺失的点。

尝试这个:

echo '<h2><a name="'.$title.'" href="#'.$title.'">'.$title.'</a><span class="line"></span></h2>';
于 2013-07-15T14:27:52.660 回答
-1
echo '<h2><a name="'.$title.'" href="#'.$title.'">'.$title.'</a><span class="line"></span></h2>';

您在 $title 之后缺少点

此外,您的链接链接到他们自己。您需要定义一个单独的锚点,然后链接到它。

于 2013-07-15T14:29:13.573 回答