[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обрезка строки
DeeKeiD
Имеется два текста

№1
Цитата

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

№2
Цитата

Line 1 text text text text text text text text text text text text text text text text
Line 2  text text text text text text text text text text text text text text text text
Line 3  text text text text text text text text text text text text text text text text
Line 4 text text text text text text text text text text text text text text text text
Line 5  text text text text text text text text text text text text text text text text
Line 6  text text text text text text text text text text text text text text text text
Line 7 text text text text text text text text text text text text text text text text
Line 8  text text text text text text text text text text text text text text text text
Line 9  text text text text text text text text text text text text text text text text

Как сделать чтоб substr обрезал текст если символов больше 150, и новых линий больше 5?

т.е конечный результат должен быть таким:

#1
Цитата

Line 1
Line 2
Line 3
Line 4
Line 5...

#2
Цитата

Line 1 text text text text text text text text text text text text text text text text
Line 2  text text text text text text text text text text text text text text text text
Line 3  text text text text text text text text text text text text text text text text
Line 4 text text text text text text text text text text text text text text text text
Line 5  text text text text text text text text text text text text text text text text...




Спустя 2 минуты, 26 секунд (6.08.2011 - 17:20) Winston написал(а):
А регулярки покатят ?

Спустя 2 минуты, 7 секунд (6.08.2011 - 17:22) kovaldm написал(а):
Можно через implode/explode сделать.

Спустя 51 секунда (6.08.2011 - 17:23) DeeKeiD написал(а):
Цитата (Winston @ 6.08.2011 - 14:20)
А регулярки покатят ?

всмысле?, текст должен оставатся неизменным

Спустя 1 минута, 26 секунд (6.08.2011 - 17:25) Winston написал(а):
Цитата (DeeKeiD @ 6.08.2011 - 17:18)
Как сделать чтоб substr обрезал текст если символов больше 150

substr_replace($text, '', 150);




Спустя 1 минута, 34 секунды Winston написал(а):
Цитата (DeeKeiD @ 6.08.2011 - 17:23)
всмысле

Регулярками обрезать.
Цитата (DeeKeiD @ 6.08.2011 - 17:23)
текст должен оставатся неизменным

В смысле? Ты же говоришь, чтобы обрезать smile.gif

Спустя 2 минуты (6.08.2011 - 17:27) kovaldm написал(а):
Последнее слово должно быть целым или его можно "обрезать"?

Спустя 59 секунд (6.08.2011 - 17:28) DeeKeiD написал(а):
т.е сюда, добавить substr_replace ?

function cut_content($max_symbols,$content)
{
if(strlen($content) > $max_symbols)
{
$content = substr($content, 0, $max_symbols);
return $content.'...';
}
else
{
return $content;
}
}


последнее слово можно обрезать

Спустя 1 минута, 9 секунд (6.08.2011 - 17:29) Winston написал(а):
Так
$content = substr_replace($content, '...', 150);

Спустя 1 минута, 53 секунды (6.08.2011 - 17:31) DeeKeiD написал(а):
Цитата (Winston @ 6.08.2011 - 14:29)
Так
$content = substr_replace($content, '...', 150);

всёравно выводит все 10 линий текста вместо 5

Спустя 2 минуты, 2 секунды (6.08.2011 - 17:33) kovaldm написал(а):
Преобразуйте $content в массив и обрабатывате первые 5 элементов, остальные - удаляйте.

Спустя 1 минута, 29 секунд (6.08.2011 - 17:34) DeeKeiD написал(а):
Цитата (kovaldm @ 6.08.2011 - 14:33)
Преобразуйте $content в массив и обрабатывате первые 5 элементов, остальные - удаляйте.

можно пример?

Спустя 8 минут, 6 секунд (6.08.2011 - 17:42) kovaldm написал(а):
$content = explode("\n", $content)

Получите массив, и первые пять элементов обрабатываете своей функцией.

Спустя 1 минута, 7 секунд (6.08.2011 - 17:43) Winston написал(а):
Интересное задание было, решил написать код...
Вот так вот :)
echo '<pre>';
echo $str = 'Line 1 text text text text text text text text text text text text text text text text
Line 2 text text text text text text text text text text text text text text text text
Line 3 text text text text text text text text text text text text text text text text
Line 4 text text text text text text text text text text text text text text text text
Line 5 text text text text text text text text text text text text text text text text
Line 6 text text text text text text text text text text text text text text text text
Line 7 text text text text text text text text text text text text text text text text
Line 8 text text text text text text text text text text text text text text text text
Line 9 text text text text text text text text text text text text text text text text'
;
echo '</pre>';
function cut_content($max_symbols,$content)
{
$content = str_replace("\r", '', $content);
if(strlen($content) > $max_symbols)
{
$content = explode("\n", $content);
$content = array_map(create_function('$item', 'return substr_replace($item, "...", 50);'), $content);
$content = array_slice($content, 0, 5);
$content = implode("\n", $content);
return $content;
}
else
{
return $content;
}
}

echo '<pre>';
print_r(cut_content(100, $str));
echo '</pre>';

Спустя 3 минуты, 4 секунды (6.08.2011 - 17:46) kovaldm написал(а):
Winston
Не, сначала надо в массив, а потом каждую строку с 0 по 4 проверять на длину и обрабатывать.

Спустя 1 минута, 54 секунды (6.08.2011 - 17:48) Winston написал(а):
Цитата (kovaldm @ 6.08.2011 - 17:46)
Не, сначала надо в массив,

Цитата (Winston @ 6.08.2011 - 17:43)
$content = explode("\n", $content);

Цитата (kovaldm @ 6.08.2011 - 17:46)
а потом каждую строку с 0 по 4 проверять на длину и обрабатывать

Значит поменять array_map и array_slice местами smile.gif

Спустя 4 минуты, 32 секунды (6.08.2011 - 17:53) kovaldm написал(а):
Winston
У тебя сначала идет проверка $content на количество символов и, обработав такой вариант
Цитата
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

функция вернет больше чем первые пять строк.

Поэтому
$content = explode("\n", $content);

нужно ставить в самом начале тела функции.

Спустя 12 минут, 24 секунды (6.08.2011 - 18:05) shvedsd написал(а):
function blog_red($text) {
if (strlen($text)>150) {
return substr($text,0,150)."... ";
}
return $text;
}


вот попробуй функцию


_____________
Бесполезно просить пощады у цезаря
Фатальная ошибка : Звонок в неопределенную функцию ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.