操作CodeIgniter分析文本
我使用CodeIgniter中的模板分析器类为视图(MVC)设计师友好的外观。我有一系列我想要显示的帖子,但是在首页上,我只想要显示帖子的一部分(前200个字符),然后是“更多”链接。操作CodeIgniter分析文本
它正在输出帖子,但似乎忽略PHP substr()函数bc文本全长出来。
里面的模型类:
function __construct()
{
parent::__construct();
$this->load->library('parser');
$this->load->model('MPosts');
}
function index() // BASE_URL
{
$data = array("article_posts" => $this->MPosts->get_posts());
$this->parser->parse('VPosts', $data);
}
的视图中:
<body>
{article_posts}
<h2><a href="posts/post/{postID}">{title}</a></h2>
<p><?=substr("{post}", 0, 200);?>...</p>
<p><a href="posts/post/{postID}">Read More</a></p>
<hr />
{/article_posts}
</body>
由于您使用的是MySQL查询,以获取文章,你可以随时使用SUBSTRING(article_column_name,1,200)
只抢到了前200个字符,基本上substr()
参见:https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring
尝试echo
,而不是?=
。
人们倾向于将代码留给控制器的构造函数中的load
(模型)库,其中用户定义的函数将调用对模型文件中实现的用户定义函数的调用。
就像你的想法非常有想法。凉! –
里面的parser->parse()
代码:
- CI首先将您的模板通过
load->view()
处理器传递,就像常规视图一样(因此它会在您的模板中执行PHP代码), - 然后它通过“
{pseudovar}
-替代者”。
在这一点上,我敢肯定,你明白的问题:substr()
应用到字符串"{post}"
我能想到的这些选项对你的情况:
- 做
substr()
控制器 - 方面,可能是解决您的问题的最快解决方案 - 删除解析器层并使用普通ol'PHP代码,这是很好的
- 使用第三方超重全功能模板引擎
您需要为您的模型获取'index()'中文章的'substr()'。然后,只需执行'
{post} ...
' –您是否指控制器的index()?谢谢。我希望避免这种情况,但看起来我可能不得不这样做。 – Glyph
你能否改变你的句子“文字全长”,因为输出实际上是“{post}”? –