Помощник
|
Как скрыть лишние символы в строке? |
Licoric
|
Сообщение
#1
|
||
|
|
||
|
|||
mamchyts |
26.7.2011, 20:25;
Ответить: mamchyts
Сообщение
#2
|
|
В таком случае, нужно перед отображением сделать
if(strlenght($str) > 300) { $str = strip_tags($str); $str = substr($str, 0 , 300); $str .= '<a>читать далее</>'; } echo $str; |
|
|
Licoric
|
Сообщение
#3
|
|
strip_tags
Эта функция возвращает строку str, из которой удалены HTML и PHP тэги. А если мне надо сохранить форматирование? Вставленные картинки в начале текста, шрифты жирный и курсив? Абзацы? Может это и подходит, но это не совсем в тему. |
|
|
adlic |
26.7.2011, 20:30;
Ответить: adlic
Сообщение
#4
|
|
В таком случае, нужно перед отображением сделать Лучше сначала $str = strip_tags($str);, а потом уже считать длину строки, так как теги тоже учитываются как символ. Картинки, ссылки, элементарное редактирование можно записать в исключения: [PHP]strip_tags($str, "<img>,<a>,</a>, <b>, </b>, <i>, </i>, <s>, </s>, <p>, </p>");[/PHP] |
|
|
Licoric
|
Сообщение
#5
|
|
Мне не принципиально 300 символов. Я потом это допилю. Просто хочется выводить текст красиво.
*Я хочу потом сделать так, что если число оставшихся символов меньше 200, тогда выводить текст целиком. Просто потому, что читать за "далее" 3-5 лишних слов - не удобно. Как в контакте сейчас. Там постоянно прячется за "читать далее" 2-3 слова. |
|
|
mamchyts |
26.7.2011, 20:51;
Ответить: mamchyts
Сообщение
#6
|
|
[PHP]
if(strlenght(strip_tags($str)) > 200) { $str = strip_tags($str, "<img>,<a>,</a>, <b>, </b>, <i>, </i>, <s>, </s>, <p>, </p>"); $str = substr($str, 0 , 100); $str .= '<a>читать далее</>'; } echo $str; [/PHP] |
|
|
Licoric
|
Сообщение
#7
|
|
хотелось бы что-то универсальное. Ибо тэги могут быть и другими. Ну или хотя бы еще одно решение на пхп. Мне думается, что это не совсем то...
|
|
|
alexdrob |
26.7.2011, 21:21;
Ответить: alexdrob
Сообщение
#8
|
|
ну тогда считайте открытые теги все, и закрывайте в обратном прядке который не закрыты)
|
|
|
Den1xxx |
26.7.2011, 21:30;
Ответить: Den1xxx
Сообщение
#9
|
|
ну тогда считайте открытые теги все, и закрывайте в обратном прядке который не закрыты) Кстати да - http://jehy.ru/articles/2008/10/26/php-close-open-html-tags/ [PHP]function close_dangling_tags($html){ #put all opened tags into an array preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU",$html,$result); $openedtags=$result[1]; #put all closed tags into an array preg_match_all("#</([a-z]+)>#iU",$html,$result); $closedtags=$result[1]; $len_opened = count($openedtags); # all tags are closed if(count($closedtags) == $len_opened){ return $html; } $openedtags = array_reverse($openedtags); # close tags for($i=0;$i < $len_opened;$i++) { if (!in_array($openedtags[$i],$closedtags)){ $html .= '</'.$openedtags[$i].'>'; } else { unset($closedtags[array_search($openedtags[$i],$closedtags)]); } } return $html; }[/PHP] |
|
|
alexdrob |
26.7.2011, 21:33;
Ответить: alexdrob
Сообщение
#10
|
|
вот только, может и пол тега картинки отрезать :D
значит ещё вначале нужно проверить открытые < и не закрытые, и удалить а потом уже закрывать |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Арбитражники, как ведете учет расходов и доходов? | 12 | Boymaster | 1907 | Вчера, 21:03 автор: MisterBit |
|
Как вывести деньги в Украине с заблокированного Юмани ? | 29 | freeax | 4812 | 17.4.2024, 1:19 автор: sergio11 |
|
Как вы отдыхаете от работы за компом | 148 | adw-kupon.ru | 19711 | 8.4.2024, 10:37 автор: Skyworker |
|
Как вы бросили работу и перешли на заработок с сайтов? | 18 | uahomka | 3104 | 5.4.2024, 5:53 автор: Skyworker |
|
Как бездомные хранят деньги? | 81 | metvekot | 13657 | 31.3.2024, 12:44 автор: Boymaster |
Текстовая версия | Сейчас: 20.4.2024, 0:31 |