Проверить поле и переписать в массив Codeigniter - PullRequest
0 голосов
/ 26 декабря 2011

Мне нужно усечь строку и переписать ее обратно в массив

У меня есть функция, где я получаю данные из базы данных

 $data['about_text_list'] = $this->about_text_model->get_array();

Я получаю эти поля из базы данных: id, num, header, text, language

Мне нужно раздеть теги и обрезать текст с помощью функции word_limiter

        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

<? foreach ($about_text_list as $line) : ?>

    <td><?=$line['text']?></td>

<? endforeach; ?>

Но я получаю ошибку, пожалуйста, скажите мне, как сделать правильные вещи, как это ...

1 Ответ

4 голосов
/ 27 декабря 2011

В цикле в вашем контроллере вы ограничиваете количество слов, а затем устанавливаете это значение в массиве. Затем вы перезаписываете это значение с помощью функции 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');

Конечно, все зависит от структуры вашего массива, о которой я сейчас думаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...