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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Разрезать текст не по тегу

Сообщения:  [1-10]    [11-20]   [21-30]  [31-34] 

 
 автор: Fractured#   (02.12.2009 в 17:28)   письмо автору
 
   для: Trianon   (02.12.2009 в 16:36)
 

Ему статус не позволяет писать проще

  Ответить  
 
 автор: Trianon   (02.12.2009 в 16:36)   письмо автору
 
   для: mihdan   (02.12.2009 в 16:26)
 

А вот это обязательно надо было - текст хелпер-функции в строковый литерал совать?
Его ж не прочтешь нормально!
Вот зачем этот выпендреж на ровном месте?

  Ответить  
 
 автор: mihdan   (02.12.2009 в 16:26)   письмо автору
 
   для: mihdan   (30.11.2009 в 16:55)
 

Чтобы не обрезать теги

<?php
function breakword ($txt,$len,$delim='\s;,.!?:#') {
    
$txt preg_replace_callback ("#(</?[a-z]+(?:>|\s[^>]*>)|[^<]+)#mi"
                                  
,create_function('$a'
                                                  
,'static $len = '.$len.';'
                                                  
.'$len1 = $len-1;'
                                                  
.'$delim = \''.str_replace("#","\\#",$delim).'\';'
                                                  
.'if ("<" == $a[0]{0}) return $a[0];'
                                                  
.'if ($len<=0) return "";'
                                                  
.'$res = preg_split("#(.{0,$len1}+(?=[$delim]))|(.{0,$len}[^$delim]*)#ms",$a[0],2,PREG_SPLIT_DELIM_CAPTURE);'
                                                  
.'if ($res[1]) { $len -= strlen($res[1])+1; $res = $res[1];}'
                                                  
.'else         { $len -= strlen($res[2]); $res = $res[2];}'
                                                  
.'$res = rtrim($res);/*preg_replace("#[$delim]+$#m","",$res);*/'
                                                  
.'return $res;')
                                  ,
$txt);
     while (
preg_match("#<([a-z]+)[^>]*>\s*</\\1>#mi",$txt)) {
         
$txt preg_replace("#<([a-z]+)[^>]*>\s*</\\1>#mi","",$txt);
     }
     return 
$txt;
}
?>

  Ответить  
 
 автор: mihdan   (30.11.2009 в 16:55)   письмо автору
 
   для: Wyfinger   (28.11.2009 в 03:03)
 

   
<?php
function cutStr($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;
        }
}
?>

  Ответить  
 
 автор: Wyfinger   (30.11.2009 в 05:04)   письмо автору
 
   для: sim5   (28.11.2009 в 09:04)
 

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

  Ответить  
 
 автор: Николай2357   (29.11.2009 в 14:40)   письмо автору
 
   для: sim5   (29.11.2009 в 12:15)
 

Ну да, не очень кчемный :) Но факт есть факт - визивиги его именно так и генерят зачастую.

  Ответить  
 
 автор: sim5   (29.11.2009 в 12:15)   письмо автору
 
   для: Николай2357   (29.11.2009 в 11:34)
 

А, вы о стыках тега и текста. Валидный, но некчемный )

  Ответить  
 
 автор: Jackkum   (29.11.2009 в 11:43)   письмо автору
 
   для: sim5   (29.11.2009 в 11:02)
 

О чем спорите то, способов то много, можно просто подправить рег. выражение добавить в шаблон и другие символы... :)

  Ответить  
 
 автор: Николай2357   (29.11.2009 в 11:34)   письмо автору
 
   для: sim5   (29.11.2009 в 11:02)
 

Ну что Вы такое говорите... Какой разорванный тег? Или Вы назовете этод код невалидным?
<p style="color:red">простой текст простой текст</p>простой текст<div>простой текст</div>простой текст <strong>простой текст</strong>

А именно он будет обработан криво strip_tags() в чистом виде, применительно к данной задаче. И это не следствие никакое. И даже не болезнь. И в лечении не нуждается. Это нормальный, валидный код, который нужно подобающим образом обработать и вывести...

  Ответить  
 
 автор: sim5   (29.11.2009 в 11:02)   письмо автору
 
   для: Николай2357   (29.11.2009 в 10:59)
 

Что вы говорите?! Даже и не знал, что "разорванный" тег брвузер примет за проблел. Акститесь, Николай :)
Эффективным лечением может быть только одно лечение, когда лечится не следствие, а причина. Мне больше добавить нечего.

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]  [31-34] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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