Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > вывод первых нескольких слов


Автор: dstorm81 6.6.2007, 08:45
доброго здравия люди добрые..
надысь, для производственных нужд, написал свою функцию по выводу нескольких начальных слов из длинющего текста (с тегами).
вроде как краткое превью того что написано в статейке.
написал и засумневался, может в php5 уже реализована такая функция
если не сложно развейте мои сомнения, или линк укажите на эту вшитую функцию.



Автор: rMaveric 6.6.2007, 08:54
Ну а чем тебе вывод определенного кол-ва символов не устраивает???

Автор: FrRon 6.6.2007, 09:05
dstorm81

Код

<?php

 $wrd = explode(" ", $text);
 For ($i = 0; $i <= $a; $i++)
  echo ($wrd[$i]);

?>


Где $a - сколько слов нужно вывести.



rMaveric

Например то что слово не целиком выведется ;)

Автор: dstorm81 6.6.2007, 09:06
Добавлено @ 09:10
2 FrRon я тебя запомнил, проверю дома твой вариант. если работает то +
еже ли не работает то 2 - за сомоуверенность smile
шутка smile



Автор: FrRon 6.6.2007, 09:17
Вот, глянь =)

Код

<?php

    $text = "слово1 слово2 слово3 слово4 <br /> слово4";
    $a = explode (" ", $text);
    For ( $i = 0; $i <= 2; $i++ )
        echo ($a[$i]);

?>


Вывод : "слово1слово2слово3".

Автор: dstorm81 6.6.2007, 09:44
да это я ступил сдецел в строке вместо <br />  [br/] будет, так что все путем будет smile

Автор: CyClon 6.6.2007, 09:47
Нужно вывести не просто некоторое кол-во слов, а некоторое-кол-во слов и точку. Не совсем это правильно, на середине предложения останавливаться smile

Автор: CyClon 6.6.2007, 10:04
Че-то типа того:

Код
<?php

$text = "Здесь будет мой очень длинный текст. Превью будет выводится до первой точки после 30 слова или до первого переноса строки.";

$p = explode('<br />', $text);

$words = explode(' ', $p[0]);

if (sizeof($words) > 30) {
    if (($pos = strpos($p[0], '.', 30)) !== false) {
        echo substr($p[0], 0, $pos);
    } else {
        echo $p[0];
    }
} else {
    echo $p[0];
}

?>

Автор: dstorm81 6.6.2007, 12:21
2 цыклон||циклон 
неа все правильно, делается для того чтобы придать незавершенность... заинтересовать скажем так человека.
такая ТЗ вообщем.
тему закрываю

Автор: BuShaRt 6.6.2007, 14:23
Цитата(dstorm81 @  6.6.2007,  12:21 Найти цитируемый пост)
неа все правильно, делается для того чтобы придать незавершенность... заинтересовать скажем так человека.

Суть не меняеться, а организация у циклона лучше.

Автор: sTa1kEr 8.6.2007, 22:04
FrRon, таким способом можно разрезать тэг пополам, будет не очень красиво выглядеть. Я бы предложил использовать регулярные выражения. Что-нибудь вроде этого:
Код

$n = 7;
$text = "PHP is a <b>widely-used</b> general-purpose <br /> scripting language that is especially suited for Web development and can be embedded into HTML.";
preg_match("@(?:<[^>]+>\s*|[^\s]+\s*){0,$n}@is", $text, $match);
echo $match[0]; // PHP is a <b>widely-used</b> general-purpose <br />

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)