php preg_replace:查找链接并向其添加#hash?

发布于 2024-10-22 00:29:08 字数 867 浏览 3 评论 0原文

我有以下结构...

$output = '

  • Something
  • ' 实际上 $output 包含多个列表项。

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

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

    编辑:顺便说一句,它应该始终是相同的#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;
    }
    

    i have the following structure...

    $output = '<li><a href="http://forum.example.org">Something</a></li>'
    Actually $output holds multiple list-items.

    What's the best and easiest way to apply a #hash to each links href? as in...

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

    Any idea how to solve that?

    edit: btw it should always be the same #hash not as you might think in this example above, the #something is equal to the name of the link. So it should be #something for each link.

    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;
    }
    

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(1

    别理我 2024-10-29 00:29:08
    $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();
    }
    
    $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()
    

    Edit:

    In your above code, you need to change:

            $dom->saveHTML();
    
            return $output;
    }
    

    To:

            return $dom->saveHTML();
    }
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文