Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обрезание текста в новостях
 
 автор: ALEXIT   (01.08.2007 в 17:01)   письмо автору
 
 

Не могу понять как лучше сделать анонсы новостей в новостной ленте. Мне знакомы методы, которые используются в разных cms(заносят в базу 2 текста, обычно). Я смотрел скрипт новостной ленты на softtime, там текст просто обрезается после определенного количества символов. В принципе можно использовать оба способа. Но так как я изначально заносил в базу только полный текст новости, мне подходит 2-й способ. Так вот в чем вопрос: Можно ли сделать так, чтобы текст обрезался, но при этом не повреждались html теги(например <img>)?

   
 
 автор: himic   (01.08.2007 в 18:06)   письмо автору
 
   для: ALEXIT   (01.08.2007 в 17:01)
 

Это геморой, у меня есть поле превью, это самое то и нечего не надо обрезать

   
 
 автор: ddhvvn   (01.08.2007 в 19:14)   письмо автору
 
   для: himic   (01.08.2007 в 18:06)
 

Конечно можно. Смотрите рег.выражения

   
 
 автор: cheops   (02.08.2007 в 09:35)   письмо автору
 
   для: ALEXIT   (01.08.2007 в 17:01)
 

Из краткого текста просто вырезайте всего HTML-тэги.

   
 
 автор: выдр   (02.08.2007 в 09:40)   письмо автору
 
   для: cheops   (02.08.2007 в 09:35)
 

я у себя на сайте сделал так:
if (strlen ($text) > 200)
  {
   $text_razb = str_split ($text, 200);
   list($text1) = ($text_razb);
   $num = strrpos ($text1, " ");
   $text_razb = str_split ($text, $num);
   list($text) = ($text_razb);
  }

текст обрезается до 200 символов, но не обрывается на любой букве, а только после того как закончится слово.

   
 
 автор: Ralph   (02.08.2007 в 10:24)   письмо автору
 
   для: выдр   (02.08.2007 в 09:40)
 

...но может разорвать тэг на две части : <img и src=...>

   
 
 автор: Trianon   (02.08.2007 в 10:35)   письмо автору
 
   для: ALEXIT   (01.08.2007 в 17:01)
 

А показывать первые 200 символов либо до первого '<' - не покатит?

   
 
 автор: mihdan   (02.08.2007 в 15:43)   письмо автору
 
   для: ALEXIT   (01.08.2007 в 17:01)
 


<?php
// Функция обрезает строку до задной длины
function cut_str($str) {
    
$lenght 100;
    
$str strip_tags($str);
    if (
strlen($str) >= $lenght) {
        
$wrap wordwrap($str$lenght"~");
        
$str_cut substr($wrap0strpos($wrap"~"));
        
$str_cut .= ' ...';
        return 
$str_cut;
    } else {
        
$str_cut $str ' ...';
        return 
$str_cut;
    }
}

// Вызывать так 
echo cut_str('тут ваш текст, который надо обрезать');
?>

   
 
 автор: Unkind   (02.08.2007 в 15:50)   письмо автору
 
   для: ALEXIT   (01.08.2007 в 17:01)
 

Если Вы хотите, чтобы если в нужное кол-во символов попал кусок тега он не повреждался, то нужно, во-первых, запросить еще нужное кол-во символов до символа ">".
Далее нужно провести поиск парных тегов в тексте. Если каких-то хватать не будет - добавить к концу получившегося куска.

   
 
 автор: ALEXIT   (03.08.2007 в 21:44)   письмо автору
 
   для: Unkind   (02.08.2007 в 15:50)
 

Всем спасибо, буду пробовать и экспериментировать :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования