Devis Gratuit en ligne | Liens | Mentions Légales
Disponible au : 
Parce que l'utilisation de wordwrap() ne satisfaisant pas toujours les plus exigeants (certains se reconnaitront
)
J'ai développé cette petite fonction qui permet de découper un texte selon les critères suivant :
Avec cette fonction, vous pourrait créer des aperçus de textes sans couper de mots, le découpage se fait sur un espace et non en plein milieu d'un mot... bon trève de blabla...
<?php
/*
\\\\\\///
\ ~ ~ /
_( @ @ )_
/ \ / \
____________oOOo_ Q _oOOo______________
| |
| Par David Lannoy |
| www.optimal-effect.com |
| contact[at]optimal-effect[point]com |
| ___ ___ |
|__________/---\_______/---\____________|
¨¨¨¨¨ ¨¨¨¨¨
*/
function getApercuTxt($texte, $caract_par_ligne, $nbre_ligne_max, $end) {
// Init
$texte = strip_tags(str_replace('<br />', ' ', $texte));
$row_lignes_finales = array();
$nbre_caract_reserve = strlen($end);
// Découpage des lignes
$texte_predecouper = wordwrap($texte, $caract_par_ligne, 'µµ', true);
$data_lignes_recouper = preg_split('#µµ#', $texte_predecouper);
// Stockage des lignes
foreach($data_lignes_recouper as $ligne) {
array_push($row_lignes_finales, $ligne);
if(count($row_lignes_finales)>=$nbre_ligne_max)
break;
}
// Si le texte possède plus de caractères
// que le maximum qui peut être recupéré
if(strlen($texte) > ($caract_par_ligne*$nbre_ligne_max)) {
$derniere_ligne = trim($row_lignes_finales[count($row_lignes_finales)-1]);
$new_caract_max = $caract_par_ligne - $nbre_caract_reserve;
$ligne_fin_couper = trim(substr($derniere_ligne, 0, $new_caract_max));
$ligne_fin_modifier = substr($ligne_fin_couper, 0, strrpos($ligne_fin_couper,' ')); // Retourne la ligne couper au dernier espace
// Si le dernier caractère de la phrase
// est autre chose qu'une lettre ou un chiffre
$caract_de_fin = substr($ligne_fin_modifier, strlen($ligne_fin_modifier)-1);
$fin_interdite = array('-', ',', ':');
$fin_sans_suite = array('.', '?', '!');
if(in_array($caract_de_fin, $fin_interdite))
$ligne_fin_modifier = substr($ligne_fin_modifier, 0, -1).$end;
elseif(!in_array($caract_de_fin, $fin_sans_suite))
$ligne_fin_modifier .= $end;
array_pop($row_lignes_finales);
array_push($row_lignes_finales, $ligne_fin_modifier);
}
$apercu = implode('<br />', $row_lignes_finales);
return $apercu;
}
// Exemple d'utilisation de la fonction
$texte = 'Webmaster web-designer vous propose la création de votre site internet sur-mesure ou toutes conceptions graphiques assistées par ordinateur: webdesign, logo, flyer...
Entreprise, particulier, association... mes services sont destinés à tous. Parce que chaque projet est unique, les tarifs sont adaptés en fonction de la complexité du cahier des charges mais aussi du statut et budget de chacun.
Les offres et projets concevables :
Du découpage xhtml/css au site dynamique php/mysql, javascript/ajax, de la carte de visite au flyer promotionnel, du site vitrine au site e-commerce en passant par le communautaire, je réalise tous types de prestations relevant du développement web ou du graphisme.';
$texte_decouper = getApercuTxt($texte, 40, 4, '...');
echo $texte_decouper;
/*
Résultat :
---------------------
Webmaster web-designer vous propose la
création de votre site internet
sur-mesure ou toutes conceptions
graphiques assistées par...
*/
?>
La fonction sans commentaire maintenant :
<?php
function getApercuTxt($texte, $caract_par_ligne, $nbre_ligne_max, $end) {
$texte = strip_tags(str_replace('<br />', ' ', $texte));
$row_lignes_finales = array();
$nbre_caract_reserve = strlen($end);
$texte_predecouper = wordwrap($texte, $caract_par_ligne, 'µµ', true);
$data_lignes_recouper = preg_split('#µµ#', $texte_predecouper);
foreach($data_lignes_recouper as $ligne) {
array_push($row_lignes_finales, $ligne);
if(count($row_lignes_finales)>=$nbre_ligne_max)
break;
}
if(strlen($texte) > ($caract_par_ligne*$nbre_ligne_max)) {
$derniere_ligne = trim($row_lignes_finales[count($row_lignes_finales)-1]);
$new_caract_max = $caract_par_ligne - $nbre_caract_reserve;
$ligne_fin_couper = trim(substr($derniere_ligne, 0, $new_caract_max));
$ligne_fin_modifier = substr($ligne_fin_couper, 0, strrpos($ligne_fin_couper,' '));
$caract_de_fin = substr($ligne_fin_modifier, strlen($ligne_fin_modifier)-1);
$fin_interdite = array('-', ',', ':');
$fin_sans_suite = array('.', '?', '!');
if(in_array($caract_de_fin, $fin_interdite))
$ligne_fin_modifier = substr($ligne_fin_modifier, 0, -1).$end;
elseif(!in_array($caract_de_fin, $fin_sans_suite))
$ligne_fin_modifier .= $end;
array_pop($row_lignes_finales);
array_push($row_lignes_finales, $ligne_fin_modifier);
}
$apercu = implode('<br />', $row_lignes_finales);
return $apercu;
}
?>
Google+
Retrouvez Optimal-effectsur