Compter sans prendre en compte les balises
Posté : 24 oct. 2011, 19:14
Bonjour,
je vais essayer d'être claire
BUT : afficher un texte depuis une table sql en 2 colonnes - colonne1 = 300 mots - colonne2 = le reste
MOYENS : affichage de la colonne1 OK, affichage de la colonne2 pas loin du OK
LE PROBLEME : je souhaiterais que ma fonction récupère le nombre de mots à partir du 300e sans prendre en compte les balises <div> et <br>
MON CODE :
Si je mets le compteur comme au-dessus, il me compte les balises html comprises et j'ai plusieurs messages d'erreurs lorsque l'on dépasse le nombre de mots à afficher
J'ai bien tenté ça :
il m'affiche plus de 2500 mots alors qu'il n'y en a que 570 environ...
Je m'en remets à vous, car je cherche, je cherche mais je ne trouve pas de solution
Merci d'avance !
je vais essayer d'être claire
BUT : afficher un texte depuis une table sql en 2 colonnes - colonne1 = 300 mots - colonne2 = le reste
MOYENS : affichage de la colonne1 OK, affichage de la colonne2 pas loin du OK
LE PROBLEME : je souhaiterais que ma fonction récupère le nombre de mots à partir du 300e sans prendre en compte les balises <div> et <br>
MON CODE :
function finchaine($chaine2, $nbmots2) {
$tab2 = explode(" ",$chaine2);
if (count($tab2) == $nbmots2) {
$affiche1 = $chaine2;
} else {
$affiche1 = " $tab2[300]";
for ($i=300; $i<$nbmots2; $i++) {
$affiche1 .= " $tab2[$i]";
}
}
return $affiche1;
}
$mots_complets2 = $contenu;
$nbmots2 = count(preg_split("`\\W`", $contenu, 0, PREG_SPLIT_NO_EMPTY));
$mot_courts2 = finchaine($mots_complets2, $nbmots2);
echo $mot_courts2;
Si j'affiche un chiffre indicatif je n'ai pas de soucis hormis le fait que si mon texte est plus long ça ne sera pas affiché.Si je mets le compteur comme au-dessus, il me compte les balises html comprises et j'ai plusieurs messages d'erreurs lorsque l'on dépasse le nombre de mots à afficher
C'est logique!Notice: Undefined offset: 456 in C:\wamp\www\monsite\actualite.php on line 78
J'ai bien tenté ça :
$nbmots2 = count(preg_split("<[<div>]*>", $contenu, 0, PREG_SPLIT_NO_EMPTY));
Mais ça veut pas Je m'en remets à vous, car je cherche, je cherche mais je ne trouve pas de solution
Merci d'avance !