par
Aureusms » 11 janv. 2010, 13:33
Comme ton cas m'intéresse pour un de mes sites, j'ai concocté une petite classounnette normande. Dis moi si cela t'intéresse :
Pour appeller la class :
$texte_lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum laoreet scelerisque convallis. Nulla enim felis, rhoncus pharetra sollicitudin venenatis, facilisis eu erat. Donec volutpat erat vel erat pharetra sed eleifend est tincidunt. Maecenas vestibulum, elit vitae congue rhoncus, dui nunc gravida elit, sit amet porttitor dolor leo a quam. Duis augue odio, aliquam non tempor nec, semper at urna. Ut eget aliquet elit. Donec id fermentum nunc. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque viverra facilisis risus, vitae sagittis lectus mollis at. Nam vestibulum imperdiet nibh et sodales. Mauris urna lorem, gravida sit amet elementum sit amet, hendrerit vitae felis. Donec ipsum nunc, laoreet interdum hendrerit a, iaculis et eros. In egestas ipsum vitae nisi lobortis tincidunt. Praesent non nunc sit amet nulla lobortis ultricies id nec massa. Maecenas tincidunt massa eu magna tempus consectetur. Nunc eget turpis et odio interdum sagittis eget in augue. Vivamus a eros in est luctus viverra et non nisi. Sed posuere mi vulputate erat pellentesque ultricies.";
$texte = new affiche_ligne_tronquee;
$texte->texte = $texte_lorem;
$texte->nombre_caractere = 100;
$tab_retour = $texte->retourne_ligne_tronquee();
foreach ($tab_retour as $cle => $valeur)
{
echo strlen($valeur).' '.$valeur.'<br />';
}
El la class :
<?php
class affiche_ligne_tronquee
{
var $texte = "";
var $nombre_caractere = 400;
var $nombre_ligne = 3;
function retourne_ligne_tronquee ()
{
if (strlen($this->texte) <= $this->nombre_caractere)
{
$tab_sortie[0] = $this->texte;
return $tab_sortie;
}
else
{
if (is_numeric($this->nombre_caractere))
$this->nombre_caractere = intval($this->nombre_caractere);
else
$this->nombre_caractere = 400;
if (is_numeric($this->nombre_ligne))
$this->nombre_ligne = intval($this->nombre_ligne);
else
$this->nombre_ligne = 3;
$caractere_maximum = intval($this->nombre_caractere * ($this->nombre_ligne+1));
if (strlen($this->texte) > $caractere_maximum)
$this->texte = substr($this->texte,0,$caractere_maximum);
$tab_texte_temp = explode (" ",$this->texte);
$tab_sortie= array();
foreach ($tab_texte_temp as $cle => $valeur)
{
if (!empty($valeur))
$tab_texte[$cle] = trim($valeur);
}
$nombre_de_ligne = $this->nombre_ligne;
$i=0;
$tab_texte_temp = $tab_texte;
while ($nombre_de_ligne > 0)
{
$tab_comptage_mot = $this->retourne_longueur_mot_dans_tableau($tab_texte_temp);
if (array_sum($tab_comptage_mot) > $this->nombre_caractere)
{
array_pop ($tab_texte_temp);
}
else
{
$numero_clef = count($tab_comptage_mot)-1;
$tab_temp = array_slice ($tab_texte,0,$numero_clef);
$texte_retour = implode (" ",$tab_temp);
array_push($tab_sortie,$texte_retour);
$tab_texte = array_slice ($tab_texte,$numero_clef);
$nombre_de_ligne--;
$tab_texte_temp = $tab_texte;
}
}
return $tab_sortie;
}
}
function retourne_longueur_mot_dans_tableau ($tableau = 'NULL')
{
if (empty($tableau))
return FALSE;
foreach ($tableau as $cle => $valeur)
{
$tab_sortie[$cle] = strlen($valeur);
}
return $tab_sortie;
}
}
?>
Note : je l'ai mis dans contributions sans savoir si quelqu'un l'avait faites avant moi.
Comme ton cas m'intéresse pour un de mes sites, j'ai concocté une petite classounnette normande. Dis moi si cela t'intéresse :
Pour appeller la class :
[php]$texte_lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum laoreet scelerisque convallis. Nulla enim felis, rhoncus pharetra sollicitudin venenatis, facilisis eu erat. Donec volutpat erat vel erat pharetra sed eleifend est tincidunt. Maecenas vestibulum, elit vitae congue rhoncus, dui nunc gravida elit, sit amet porttitor dolor leo a quam. Duis augue odio, aliquam non tempor nec, semper at urna. Ut eget aliquet elit. Donec id fermentum nunc. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque viverra facilisis risus, vitae sagittis lectus mollis at. Nam vestibulum imperdiet nibh et sodales. Mauris urna lorem, gravida sit amet elementum sit amet, hendrerit vitae felis. Donec ipsum nunc, laoreet interdum hendrerit a, iaculis et eros. In egestas ipsum vitae nisi lobortis tincidunt. Praesent non nunc sit amet nulla lobortis ultricies id nec massa. Maecenas tincidunt massa eu magna tempus consectetur. Nunc eget turpis et odio interdum sagittis eget in augue. Vivamus a eros in est luctus viverra et non nisi. Sed posuere mi vulputate erat pellentesque ultricies.";
$texte = new affiche_ligne_tronquee;
$texte->texte = $texte_lorem;
$texte->nombre_caractere = 100;
$tab_retour = $texte->retourne_ligne_tronquee();
foreach ($tab_retour as $cle => $valeur)
{
echo strlen($valeur).' '.$valeur.'<br />';
}[/php]
El la class :
[php]<?php
class affiche_ligne_tronquee
{
var $texte = "";
var $nombre_caractere = 400;
var $nombre_ligne = 3;
function retourne_ligne_tronquee ()
{
if (strlen($this->texte) <= $this->nombre_caractere)
{
$tab_sortie[0] = $this->texte;
return $tab_sortie;
}
else
{
if (is_numeric($this->nombre_caractere))
$this->nombre_caractere = intval($this->nombre_caractere);
else
$this->nombre_caractere = 400;
if (is_numeric($this->nombre_ligne))
$this->nombre_ligne = intval($this->nombre_ligne);
else
$this->nombre_ligne = 3;
$caractere_maximum = intval($this->nombre_caractere * ($this->nombre_ligne+1));
if (strlen($this->texte) > $caractere_maximum)
$this->texte = substr($this->texte,0,$caractere_maximum);
$tab_texte_temp = explode (" ",$this->texte);
$tab_sortie= array();
foreach ($tab_texte_temp as $cle => $valeur)
{
if (!empty($valeur))
$tab_texte[$cle] = trim($valeur);
}
$nombre_de_ligne = $this->nombre_ligne;
$i=0;
$tab_texte_temp = $tab_texte;
while ($nombre_de_ligne > 0)
{
$tab_comptage_mot = $this->retourne_longueur_mot_dans_tableau($tab_texte_temp);
if (array_sum($tab_comptage_mot) > $this->nombre_caractere)
{
array_pop ($tab_texte_temp);
}
else
{
$numero_clef = count($tab_comptage_mot)-1;
$tab_temp = array_slice ($tab_texte,0,$numero_clef);
$texte_retour = implode (" ",$tab_temp);
array_push($tab_sortie,$texte_retour);
$tab_texte = array_slice ($tab_texte,$numero_clef);
$nombre_de_ligne--;
$tab_texte_temp = $tab_texte;
}
}
return $tab_sortie;
}
}
function retourne_longueur_mot_dans_tableau ($tableau = 'NULL')
{
if (empty($tableau))
return FALSE;
foreach ($tableau as $cle => $valeur)
{
$tab_sortie[$cle] = strlen($valeur);
}
return $tab_sortie;
}
}
?>[/php]
Note : je l'ai mis dans contributions sans savoir si quelqu'un l'avait faites avant moi.