slug里输入中文无效。以及中文url无效
本帖最后由 shgen 于 2013-1-14 10:46 编辑在这个手册里:
http://codeigniter.org.cn/user_g ... ate_news_items.html
第一个问题:slug里输入中文无效
$slug = url_title($this->input->post('title'), 'dash', TRUE);
我在title里输入中文,但看到数据库里,值是空的。
也就是中文无效
-------------
第二个问题:中文url无效
然后我直接在数据库里改slug的值为中文。
然后打开www.yoursite.com/index.php/news/新闻标题
结果是404错误。
用的路由是:
$route['news/(:any)'] = 'news/view/$1';
请问错在哪里?
第一,url_title() 肯定是不支持中文的,因为老外不会汉语拼音,他们也不会帮你把中文翻译成英文,呵呵
第二,URL不能包含中文,建议改用 GET 传参以支持中文。
我试了下,url可以有中文。
比如我现在把slug改成“新闻”
但是在 public function get_news($slug = FALSE){
if ($slug === FALSE)
{
$query = $this->db->get('news');
return $query->result_array();
}
//$slug=urlencode($slug);
//%E6%96%B0%E9%97%BB
//%25E6%2596%25B0%25E9%2597%25BB
$slug='新闻';
echo $slug;
$query = $this->db->get_where('news', array('slug' => $slug));
return $query->row_array();
}
里会按%E6%96%B0%E9%97%BB去查询。
但实际要数据库里是“新闻”,所以404
我用$slug=urlencode($slug);也转不成“新闻”
怎么办?
找到原因了
写反了,应该是
$slug=urldecode($slug);
而不是$slug=urlencode($slug); shgen 发表于 2013-1-14 11:37 static/image/common/back.gif
找到原因了
写反了,应该是
$slug=urldecode($slug);
不建议在 URI 分段形式的 URL 中使用中文,这样既不好看,也不方便使用。
还是建议放在 GET 传参中。 GET 传参中? 不是很明白。
因为现在这个是直接从新闻列表里取出来的。
如:
<a href="news/新闻1">新闻1</a>
<a href="news/新闻2">新闻2</a>
<a href="news/新闻3">新闻3</a>
<a href="news/新闻4">新闻4</a>
而 href="news/新闻1"里的新闻1,新闻2。。。。等等就是slug的值。
可以用id吧,只不过后边的新闻1,新闻2作为GET方法的参数,无实际用途,不过用也行。news/1?s=新闻1
页:
[1]