Php codeigniter url后缀.html+;话题标签

Php codeigniter url后缀.html+;话题标签,php,html,codeigniter,Php,Html,Codeigniter,我想在codeigniter上构建一个带有标签的url。例如: "http://www.example.com/blog/post/title.html#comments" my config.php中的url_config如下所示: $config['url_suffix'] = ".html"; 我使用以下代码来构建锚: anchor('blog/post/'.url_title($post->title, 'dash', TRUE).'#comments', 'comments',

我想在codeigniter上构建一个带有标签的url。例如:

"http://www.example.com/blog/post/title.html#comments"

my config.php中的url_config如下所示:

$config['url_suffix'] = ".html";
我使用以下代码来构建锚:

anchor('blog/post/'.url_title($post->title, 'dash', TRUE).'#comments', 'comments', 'title="'.$post->title.'"');
如果你知道任何解决方案,请告诉我。谢谢

这个怎么样

anchor(site_url('blog/post/'.$post->title)."#comments");

它返回的url如下:

如果您希望使用哈希标记而不必将“site\u url()”传递给锚方法,那么您可以相当轻松地扩展CodeIgniter配置库类

CodeIgniter配置库类有一个名为site_url的方法,该方法在使用锚方法时运行。默认情况下,site_url在传递给它的任何uri之后添加url_后缀,而不关心或不知道哈希标记。幸运的是,您可以简单地扩展Config library类来修改site_url以检查哈希标记,并在添加url_后缀后将它们添加到URI的末尾

如果您觉得有必要,请复制下面的代码并将其保存在“/system/application/libraries/MY_Config.php”下。您可能需要打开“/system/application/config/autoload.php”并将“My_config.php”添加到自动加载库数组中

<?php
class MY_Config extends CI_Config {
    function site_url($uri = '')
    {
        if (is_array($uri))
        {
            $uri = implode('/', $uri);
        }

        if ($uri == '')
        {
            return $this->slash_item('base_url').$this->item('index_page');
        }
        else
        {
            $suffix = ($this->item('url_suffix') == FALSE) ? '' : $this->item('url_suffix');
            $hash = '';
            if(substr_count($uri,'#') == 1)
            {
                list($uri,$hash) = explode('#',$uri);
                $hash = '#'.$hash;
            }
            return $this->slash_item('base_url').$this->slash_item('index_page').trim($uri, '/').$suffix.$hash;
        }
    }
}
?>


新的site_url方法将$hash设置为空字符串。如果在传入的链接中找到哈希标记,则该链接将拆分为数组并传递到变量中。site\u url现在将返回链接,并在url后缀后附加哈希标记(如果存在哈希代码)。

您也应该发布您的输出。你运行代码时发生了什么?很好。是的,这比通过扩展CodeIgniter的配置类库(epic fail)来修改site_url方法要简单得多。我完全忽略了锚方法有条件地运行通过site\u url方法传入的链接这一事实。只需在通过锚发送的链接中添加“http://”(无论您希望如何)即可使哈希标记正常工作:$site_url=(!preg_match(“!^\w+://!i',$uri))?站点url($uri):$uri;