2009-05-29 7 views
1

Je travaille sur un site qui extrait divers flux RSS publics. Je souhaite afficher une description HTML courte de l'entrée de flux.Créer des extraits Wordpress

Certains des flux viennent avec un bon extrait, mais beaucoup ne le font pas, je suis laissé à faire le mien à partir du contenu intégral.

Alors, quel est le meilleur/le plus rapide/le plus simple pour prendre un bloc de texte et le découper en seulement les deux premières lignes?

Répondre

2

Cette fonction réduira un bloc de texte à une limite de mot donné, donc il ne sera pas coupé si loin partiel par un mot:

function limit_text($text, $limit) { 
     if (strlen($text) > $limit) { 
      $words = str_word_count($text, 2); 
      $pos = array_keys($words); 
      $text = substr($text, 0, $pos[$limit]) . '...'; 
     } 
     return $text; 
    } 

Exemple d'utilisation:

echo limit_text('Hello here is a long sentence blah blah blah blah blah hahahaha haha haaaaaa', 5); 

Sorties:

Hello here is a long ... 
+0

astuce de Nice avec le deuxième argument de str_word_count. +1 –

1

Celui-ci vous donnera un peu plus de flexibilité

function string_limiter($string, $limit = 50, $end_char = '…') 
{ 
    if (trim($string) == '') 
    { 
     return $string; 
    } 

    preg_match('/^\s*+(?:\S++\s*+){1,'.(int) $limit.'}/', $string, $matches); 

    if (strlen($string) == strlen($matches[0])) 
    { 
     $end_char = ''; 
    } 

    return rtrim($matches[0]).$end_char; 
} 

Exemple comment appeler

$str = "Cras id ipsum accumsan dolor pulvinar sollicitudin et eu augue. Pellentesque sem metus, imperdiet tempor fringilla quis, convallis quis nisl. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam eget lorem ligula. Sed congue odio enim. Etiam aliquet condimentum pellentesque. Sed urna velit, egestas et dictum non, pulvinar quis dui! Cras blandit porttitor tortor nec eleifend. Nullam porttitor scelerisque nunc, id porttitor orci lobortis nec. Curabitur vestibulum molestie purus, eget convallis dolor luctus eu! Morbi id felis eu eros mattis congue non nec nisl."; 

echo string_limiter($str, 20); 

Vous obtiendrez quelque chose comme ceci:

Cras id ipsum dolor accumsan pulvinar sollicitudin et eu augue. Pellentesque metus ETM, imperdiet tempor fringilla quis, convallis quis nisl. ...

Questions connexes