检查字段并重写到数组Codeigniter

时间:2011-12-26 14:28:02

标签: php codeigniter

我需要截断字符串并将其重写回数组

我有一个从数据库中获取数据的函数

 $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; ?>

但是我收到错误,请告诉我如何做正确的事情......

1 个答案:

答案 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');

当然,这一切都取决于阵列的结构,我现在正在猜测。