php preg_replace:找到链接并添加#hash吗?

时间:2011-03-15 20:16:15

标签: php hash preg-replace

我有以下结构......

$output = '<li><a href="http://forum.example.org">Something</a></li>' 实际上$ output包含多个列表项。

将#hash应用于每个链接href的最佳和最简单的方法是什么?如......

<li><a href="http://forum.example.org#something">Something</a></li>

知道如何解决这个问题吗?

编辑:顺便说一下它应该总是相同的#hash,而不是你在上面这个例子中的想法,#something等于链接的名称。所以它应该是每个链接的#something。

add_filter('wp_list_pages', 'add_hash'); /*Add #hash to wp_list_pages() function*/
function add_hash($output) {

        $dom = new DOMDocument();
        $dom->loadHTML($output);

        $a_tags = $dom->getElementsByTagName('a');

        foreach($a_tags as $a)
        {
            $value = $a->getAttribute('href');
            $a->setAttribute('href', $value . '#b');
        }

        $dom->saveHTML();

        return $output;
}

1 个答案:

答案 0 :(得分:1)

$dom = new DOMDocument();
$dom->loadHTML($str); // Change to input variable

$a_tags = $dom->getElementsByTagName('a');

foreach($a_tags as $a)
{
    $value = $a->getAttribute('href');
    $a->setAttribute('href', $value . '#something');
}

// Get the new document with: $dom->saveHTML()

修改

在上面的代码中,您需要更改:

        $dom->saveHTML();

        return $output;
}

要:

        return $dom->saveHTML();
}