Как показать только несколько строк из основного текста - PullRequest
1 голос
/ 17 июня 2010

У меня есть база данных mySql. Я хочу отобразить только 10 слов из поля body, которые содержат html-коды. Как я могу это сделать, есть ли какая-либо функция php для этого.

Ответы [ 6 ]

1 голос
/ 17 июня 2010

Я бы предложил создать еще один столбец для этого, чтобы вам не нужно было ограничивать количество слов при каждом запросеОграничение будет легко сделать с php:

$str = '<html>word word <b> word word word word word</b> word word word <u> word</u></html>';
$str = strip_tags($str); // strip html tags
preg_match('/^\s*+(?:\S++\s*+){1,10}/u', $str, $matches); // kohana's Text::limit_words()
$str = trim($matches[0]); // first 10 words of string
0 голосов
/ 17 июня 2010

ЛУЧШЕЕ решение

function gen_string($string,$min=10,$clean=false) {
    $string = str_replace('<br />',' ',$string);
    $string = str_replace('</p>',' ',$string);
    $string = str_replace('<li>',' ',$string);
    $string = str_replace('</li>',' ',$string);
    $text = trim(strip_tags($string));
    if(strlen($text)>$min) {
        $blank = strpos($text,' ');
        if($blank) {
            # limit plus last word
            $extra = strpos(substr($text,$min),' ');
            $max = $min+$extra;
            $r = substr($text,0,$max);
            if(strlen($text)>=$max && !$clean) $r=trim($r,'.').'...';
        } else {
            # if there are no spaces
            $r = substr($text,0,$min).'...';
        }
    } else {
        # if original length is lower than limit
        $r = $text;
    }
    return trim($r);
}

просто передайте html через функцию gen_string ()

0 голосов
/ 17 июня 2010

что-то вроде этого может быть удобно.

 echo substr($returnedQuery, 0,10);
0 голосов
/ 17 июня 2010

Поскольку ваше поле содержит html, очень трудно вывести действительный html - mysql не понимает html.

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

0 голосов
/ 17 июня 2010

Я забыл, что вы хотели получить первые 10 слов , но я бы попытался использовать подстроку обрезанной строки и вернуть определенное количество символов. Вероятно, более простой код и относительно тот же результат:

 <?php 
 $start_position = 0;
 $length = 30; // number of characters, not words
 $suffix = "..."

 // check if string is longer than limit and if so, shorten and attach suffix
 if (strlen($your_text) > ($length - 3) {
   echo substr(strip_tags($your_text), $start_position, $length) . $suffix;
 } else {
   echo $strip_tags($your_text);
 } 
 ?>

Нужно сделать то же самое, если вы избавляетесь от всех форматов, таких как разрывы строк и т. Д.

0 голосов
/ 17 июня 2010
$ten = 10;
$text = strip_tags($bodyText);  // remove html tags from the body text
$wordArray = str_word_count($text,2); //extract word offsets into an array
$offsetArray = array_keys($wordArray); // Convert offsets to an array indexed by word
$firstTenWords = substr($text,0,$offsetArray[$ten]-1); extract from the string between the start and tenth word
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...