我需要截断字符串并将其重写回数组
我有一个从数据库中获取数据的函数
$data['about_text_list'] = $this->about_text_model->get_array();
我从数据库中获取这些字段:id,num,header,text,language
我需要使用函数word_limiter
来strip_tags和截断文本 foreach ($data['about_text_list'] as $items)
{
$data['about_text_list']['text'] = word_limiter($items['text'], 100);
$data['about_text_list']['text'] = strip_tags($items['text']);
}
在视图中我做了预告
<? foreach ($about_text_list as $line) : ?>
<td><?=$line['text']?></td>
<? endforeach; ?>
但是我收到错误,请告诉我如何做正确的事情......
答案 0 :(得分:4)
在控制器的循环中,您将限制字数,然后将其设置为数组中的值。然后,您使用strip_tags
函数覆盖该值。您在相同的值上使用这两个函数,而不是使用更改的值。 (我会首先删除标签,然后限制字数。)
您也只是在每次迭代时覆盖$data['about_text_list']['text']
值。我假设这需要是一个'文本'值的数组?我将使用更新的内容创建一个新数组,并将您的$data['about_text_list']
数组与新数组合并。
将该循环更改为:
$newarray = array();
foreach ($data['about_text_list'] as $key => $value)
{
$item_text = $value['text'];
$altered = strip_tags($item_text);
$newarray[$key]['text'] = word_limiter($altered, 100);
}
$data['about_text_list'] = array_merge($data['about_text_list'], $newarray);
// here, you create a new empty array,
// then loop through the array getting key and value of each item
// then cache the 'text' value in a variable
// then strip the tags from the text key in that item
// then create a new array that mirrors the original array and set
// that to the limited word count
// then, after the loop is finished, merge the original and altered arrays
// the altered array values will override the original values
此外,我不确定您的错误是什么(因为您没有告诉我们),但请确保您正在加载文本助手,以便您访问word_limiter
函数:
$this->load->helper('text');
当然,这一切都取决于阵列的结构,我现在正在猜测。