CodeIgniter 不喜欢博客文章中的特殊字符

Posted

技术标签:

【中文标题】CodeIgniter 不喜欢博客文章中的特殊字符【英文标题】:CodeIgniter does not like special charecter slug for posts in a blog 【发布时间】:2019-01-27 03:25:45 【问题描述】:

我正在 CodeIgiter 框架中制作一个简单的博客。我可以创建帖子,当创建帖子时,slug 会保存在数据库中。 slug 与帖子的标题相同,但如果帖子是特殊字符怎么办?例如,帖子的标题是“Ķas-noķika”,当我按阅读更多时,一个链接会显示这样的 slug - http://localhost/CodeIgniteBlog/posts/Ķas-noķika。在数据库中,slug 与链接中的相同,但它不获取帖子,而是向我显示 404 消息。所以我正在考虑将 url slug 从Ķas-noķika 转换为Kas-nokika,希望它能起作用。我如何在 CodeIgniter 中做这样的事情?我是否必须更改 config.php 或添加功能?

这里是创建帖子的函数:

public function create_post()
        $slug = url_title($this->input->post('title'));

        $data = array(
            'title' => $this->input->post('title'),
            'slug' => $slug,
            'body' => $this->input->post('body')
        );

        return $this->db->insert('posts', $data);
    

【问题讨论】:

【参考方案1】:

使用 convert_accented_characters() ,但首先您需要加载“文本”帮助程序。 这是一个例子:

    echo convert_accented_characters("Ķas-noķika"); //Output Kas-nokika

更多信息可以在文档链接上找到: https://www.codeigniter.com/user_guide/helpers/text_helper.html#convert_accented_characters

【讨论】:

谢谢。这就是我要找的。内置函数可以轻松创建 CodeIgniter 可接受的 slug,用于从数据库中获取数据。【参考方案2】:

转到 config/config.php

用这个查找和更新

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';

【讨论】:

但这已经是默认配置了。我已将这部分代码更改为不同的允许 uri 字符,但似乎没有任何效果。

以上是关于CodeIgniter 不喜欢博客文章中的特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Codeigniter 上隐藏 URL 字符串中的数据

codeigniter 中的安全性

如何在 Asp .net 核心网站(如博客)中制作喜欢/不喜欢按钮?

正则表达式判断字符串中包含数字、大写字符、小写字母、特殊符号中的几种怎么判断?

没有 Cookie 的 PHP 会话 | Codeigniter [关闭]

Visual Studio:显示字符串中的所有特殊字符