Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 25/03/12 в 09:05 |
Код: [развернуть] |
<?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;
?>
|
может и бутафория какая, но все же, это кусок кода отвечающий за определенную здачу пока набросок, впринципе процесс один и тот же, но х.з. может как то можно сократить?
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 25/03/12 в 09:37 |
Код: |
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);
|
это по словам, аналогично по символам
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 27/03/12 в 10:37 |
сделал так:
Код: [развернуть] |
<?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;
экран пуст, непойму что не так.
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 27/03/12 в 10:55 |
функция должна возвращать строку командой return ...
return $str_title;
а в скрипте ты просто используешь возвращенное функцией значение...
echo getLimitWords($str_title, $limit);
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 27/03/12 в 11:02 |
разобрался
спасибо!
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |