Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Возможно укоротить?
цитата
25/03/12 в 09:05
 Lexikon

<?php

$str_title = "description tag18 description tag36 description tag54 description tag72 description tag90 description tag108 description tag128
description tag147 description tag166 description tag185 description tag204 description tag223 description tag242 description tag261 description
tag280 description tag299 description tag318";

$strlen = strlen($str_title); // Определяем кол-во символов в строке
     if ($strlen > 300)
     {
             $str_title = preg_replace("/[\r\n\t]/", "", $str_title );
              $str = '';
              $str_title = substr($str_title, 0, 300);
              $words = explode(" ", $str_title);
              //$k = str_word_count($str_title) - 1;
              $k = count($words) - 1;
              $n = 0;
              while ($n < $k)
           {             
              $str .= $words[$n++].' ';             
              }
           $embed_desc_300 = trim($str)."...";
     }
     else
     {
           $embed_desc_300 = trim($str_title);
     }
     echo $embed_desc_300."<br>";
    
//------------------------------------------------------------------------------------

$strlen = strlen($embed_desc_300); // Определяем кол-во символов в строке
     if ($strlen > 120)
     {
             $embed_desc_300 = preg_replace("/[\r\n\t]/", "", $embed_desc_300);
              $str = '';
              $embed_desc_300 = substr($embed_desc_300, 0, 120);
              $words = explode(" ", $embed_desc_300);
              //$k = str_word_count($embed_desc_300) - 1;
              $k = count($words) - 1;
              $n = 0;
              while ($n < $k)
           {             
              $str .= $words[$n++].' ';             
              }
           $meta_desc_120 = trim($str)."...";
     }
     else
     {
           $meta_desc_120 = trim($embed_desc_300);
     }
     echo $meta_desc_120."<br>";

//------------------------------------------------------------------------------------

$strlen = strlen($meta_desc_120); // Определяем кол-во символов в строке
     if ($strlen > 36)
     {
             $meta_desc_120 = preg_replace("/[\r\n\t]/", "", $meta_desc_120 );
              $str = '';
              $meta_desc_120 = substr($meta_desc_120, 0, 36);
              $words = explode(" ", $meta_desc_120);
              //$k = str_word_count($meta_desc_120) - 1;
              $k = count($words) - 1;
              $n = 0;
              while ($n < $k)
           {             
              $str .= $words[$n++].' ';             
              }
           $meta_title = trim($str)."...";
     }
     else
     {
           $meta_title = trim($title);
     }

     echo $meta_title;
    
?>


может и бутафория какая, но все же, это кусок кода отвечающий за определенную здачу пока набросок, впринципе процесс один и тот же, но х.з. может как то можно сократить?
цитата
25/03/12 в 09:37
 Sterx
Код:

function getLimitWords($txt,$limit){
for($i=0;$i<strlen($txt);$i++){if(preg_match("/^([a-z ]*)$/i",$txt{$i})){$new.=$txt{$i};}else{$new.=' ';}}
foreach(explode(" ",trim($new)) as $k=>$t)
  {
  if(!$res){$res=$t;continue;}
  if(($k+1) > $limit){break;}
  $res.=" ".$t;
  }
  return $res;
}
$embed_desc = getLimitWords($embed_desc,30);


это по словам, аналогично по символам
цитата
27/03/12 в 10:37
 Lexikon
сделал так:


<?php

$str_title = "description tag18 description tag36 description tag54 description tag72 description tag90 description tag108 description tag128
description tag147 description tag166 description tag185 description tag204 description tag223 description tag242 description tag261 description
tag280 description tag299 description tag318";

function getLimitWords($str_title, $limit) {

$strlen = strlen($str_title);
     if ($strlen > $limit)
     {
             $str_title = preg_replace( "/[\r\n\t]/", "", $str_title );
              $str = '';
              $str_title = substr( $str_title, 0, $limit );
              $words = explode( " ", $str_title );
              $k = count($words) - 1;
              $n = 0;
              while ($n < $k)
           {             
              $str .= $words[$n++].' ';             
              }
           $str_title = trim($str)."...";
     }
     else
     {
     $str_title = trim($str_title);
     }
     echo $str_title;
     return;
}

getLimitWords($str_title, 300);

?>


Но вот чего не пойму так это того, если в функции убрать строку echo $str_title; то на экране ничего выводиться не будет, это и логично, т.к. нет команды вывода, но вот тогда к примеру как это дело вывести?

т.е. я к примеру за функцией пишу
$str300 = getLimitWords($str_title, 300);
$str120 = getLimitWords($str_title, 120);

затем хочу проверить передается ли то что мне нужно в переменных, делаю так:

echo $str300;
echo $str120;

экран пуст, непойму что не так. icon_confused.gif
цитата
27/03/12 в 10:55
 Sterx
функция должна возвращать строку командой return ...
return $str_title;
а в скрипте ты просто используешь возвращенное функцией значение...
echo getLimitWords($str_title, $limit);
цитата
27/03/12 в 11:02
 Lexikon
smail54.gif разобрался
спасибо!


Эта страница в полной версии