X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Обрезка текста с тегами
ZhukV
ZhukV
Topic Starter сообщение 27.7.2010, 11:46; Ответить: ZhukV
Сообщение #1


Здрасти всем. Возникла некая проблемка....... :(
Припустим есть текст всмете с тегами HTML. Количество символов - 10 000 (включая теги).

Как мне обрезать текст, чтоб было 5 000 сиволов, при этом не нарушить DOM структуру?

------------------------------------------------------
На админке, при добалении контента стоит визуальный редактор. Сразу же весь текст летит в БД. При кратком выводе нужно вывести 1 000 сиволов. На даный момент использую:
[PHP]
/*---------------------------------------------------------
Функция обрезания текста до указаной длины
---------------------------------------------------------*/
function CS_text($text,$CS = 80,$NT = "..."){
if(strtoupper($CS) == "ALL"){ return $text; }
$ar = array(",");
$r = explode(" ",$text);
for($i = 0;$i < count($r);$i++){
$t .= $r[$i] . " ";
if(strlen($t) > $CS){ break; }
}
if(in_array(substr($t, strlen($t) - 2, 1), $ar)){ $t = substr($t, 0, strlen($t) - 2); }
if(strlen($t) < strlen($text)){ $t.=$NT; }
return $t;
}
[/PHP]
Она режет теги :(
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 27.7.2010, 21:43; Ответить: Mulder_hb
Сообщение #2


Ответ очевиден: использовать регулярные выражения для определения того, что резать.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SOKOJI
SOKOJI
сообщение 27.7.2010, 22:28; Ответить: SOKOJI
Сообщение #3


http://forum.dklab.ru/php/advises/Strip_ta...Strip_tags.html гляньте здесь.
А вообще, т.к. задача не из простых, надо гуглить и на более профессиональных форумах спрашивать.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
Topic Starter сообщение 28.7.2010, 11:29; Ответить: ZhukV
Сообщение #4


(SOKOJI @ 28.7.2010, 01:28) *
http://forum.dklab.ru/php/advises/St...trip_tags.html гляньте здесь. А вообще, т.к. задача не из простых, надо гуглить и на более профессиональных форумах спрашивать.

Функция интересная, но все же не то.....

Вот в чем суть:
Сайт http://ye.ua/
На новости и статьи есть админка з визуальным редактором. В БД сайта летит контент вместе с тегами. При просмотре всех контентов (http://ye.ua/news/vsi/ http://ye.ua/statti/) текст обрезается до 1 500 символов.
Обрезается не верно, режет HTML теги.

:( :( :( :(
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alcorn
Alcorn
сообщение 28.7.2010, 12:08; Ответить: Alcorn
Сообщение #5


Как именно режет?
<ta

ble>

так?
Нужно чтоб резал сразу после ">"?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SOKOJI
SOKOJI
сообщение 28.7.2010, 13:07; Ответить: SOKOJI
Сообщение #6


(Alcorn @ 28.7.2010, 15:08) *
Как именно режет?
<ta

ble>

так?
Нужно чтоб резал сразу после ">"?


Нет, я так понимаю, что тег открывается, и не закрывается. Например, "<b>lorem ipsu...".
И все. И тег не закрыт. Получается, что весь остальной текст будет "жирным".
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alcorn
Alcorn
сообщение 28.7.2010, 13:23; Ответить: Alcorn
Сообщение #7


<body> тогда тоже незакрыт? Фиг разберёшь что надо.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
сообщение 28.7.2010, 13:39; Ответить: Letmetouchyou
Сообщение #8


ZhukV, а если например весь конткнт заключтлт в тег <p>, или <b> используя визуальный редактор? ТОгда совсем ничего не порежит.

ты можешь при обрезаинии сделать подсвте сволько и каких тегов открыто, и после , например, 500 символов просто закрыть их.

или выводи вапше без тегов
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 28.7.2010, 22:11; Ответить: Mulder_hb
Сообщение #9


Алгоритмов может быть много. Например:
1. Составляем массив $tags, содержащий в себе парные/непарные теги.
2. Составляем массив $strings, содержащий в себе строки внутри тегов. Причем $strings[$i] должно соответсвовать своему набору тегов из $tags[$i].
3. Считаем общее кол-во символов всех элементов из массива $strings. Режем их с конца.
4. Оставшиеся элементы из массива $strings обертываем в соответствующие теги из массива $tags.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
Topic Starter сообщение 29.7.2010, 10:49; Ответить: ZhukV
Сообщение #10


Режет по разному!!!
Может быть так:
<span ....>....</spa

Может открыть тег и не закрыть его.
:(
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Перевод текста в речь нейросетями - сервис Zvukogram
13 Zvukogram 7133 19.2.2024, 18:16
автор: freon_mr777
Открытая тема (нет новых ответов) 📌 Рандомизация видео/аудио/фото/текста с минимальным участием - 𝓓𝓮𝓵𝓽𝓪𝓣𝓸𝓸𝓵𝓼
Мы предлагаем комплексное решение для рандомизации всех видов офера
2 leviathan 1340 29.1.2024, 21:29
автор: leviathan
Открытая тема (нет новых ответов) Нужен перевод текста с RU на UZ
0 REGNET 743 22.2.2023, 15:17
автор: REGNET
Открытая тема (нет новых ответов) Наполнение сайта Автотематики (написание текста с размещением)
Ищу человека для длительного сотрудничества
2 NYLesha 1808 1.8.2022, 23:22
автор: NYLesha
Открытая тема (нет новых ответов) Рерайт на постоянку (2-3 текста в неделю)
Авто тематика
2 k62 1787 4.6.2021, 21:20
автор: mark2013


 



RSS Текстовая версия Сейчас: 29.3.2024, 4:06
Дизайн