<?php
// function pour ne pas prendre en compte les balises html dans une chaine de caractère (utiliser pour afficher la chaîne)
function htmlwrap($str, $maxLength, $char='<br />'){
$count = 0;
$newStr = '';
$openTag = false;
$lenstr = strlen($str);
for($i=0; $i<$lenstr; $i++){
$newStr .= $str{$i};
if($str{$i} == '<'){
$openTag = true;
continue;
}
if(($openTag) && ($str{$i} == '>')){
$openTag = false;
continue;
}
if(!$openTag){
if($str{$i} == ' '){
if ($count == 0) {
$newStr = substr($newStr,0, -1);
continue;
} else {
$lastspace = $count + 1;
}
}
$count++;
if($count==$maxLength){
if ($str{$i+1} != ' ' && $lastspace && ($lastspace < $count)) {
$tmp = ($count - $lastspace)* -1;
$newStr = substr($newStr,0, $tmp) . $char . substr($newStr,$tmp);
$count = $tmp * -1;
} else {
$newStr .= $char;
$count = 0;
}
$lastspace = 0;
}
}
}
return $newStr;
}
// __________________________________________________________________________________________________________________________
// Phrase défini (soit article)
$phrase = "<b>Lorem</b> ipsum dolor <b>sit</b> amet, <b>consectetur</b> <b>adipiscing</b> elit. Vestibulum <b>scelerisque</b> <b>velit</b> ac ligula <b>metus</b>."; // Phrase de 102 caractères
// Reset des balises <b></b>
$phrase_texte = str_replace('<b>', '', $phrase); // On ne calcule pas les balise <b>
$phrase_texte2 = str_replace('</b>', '', $phrase_texte);// On ne calcule pas les balise </b>
// Phrase finale
$phrase_coupee = wordwrap($phrase_texte2, 32, "<br />", true); // Retour à la ligne tous les 32 caractères sans couper de mots et sans les balises <b> et </b>
// Calculs en fonction des lignes
$nb_lignes = count (explode ("<br />", $phrase_coupee)); // Compter le nombre de ligne de la chaine $phrase_coupee
$nb_lignes_calcul = $nb_lignes * 1.5; // Calcul du prix des lignes (1.5€ par ligne)
$nb_mots_gras = substr_count($phrase, '<b>');
$nb_mots_gras_calcul = $nb_mots_gras * 0.02;
$prix_total = $nb_lignes_calcul + $nb_mots_gras_calcul;
// __________________________________________________________________________________________________________________________
// Afficher les résultats
// __________________________________________________________________________________________________________________________
echo htmlwrap($phrase, 32, "<br />");
echo '<br /><hr /><br />
<u>Calculs de la chaîne :</u><br />
Il y a <b>'.strlen($phrase_texte2).' caractères</b> dans cette chaîne.<br />
Il y a <b>'.$nb_lignes.' lignes</b> dans cette chaîne.<br />
Il y a <b>'.substr_count($phrase, '<b>').' mots en gras</b> dans cette chaîne.<br /><br />
<u>Calcul du prix :</u><br />
Il y a <b>'.$nb_lignes.' lignes</b> soit un total de <b>'.$nb_lignes_calcul.' euros</b>.<br />
Il y a <b>'.$nb_mots_gras.' mots en gras</b> soit un total de <b>'.$nb_mots_gras_calcul.' euros</b>.<br /><br />
<u>Total du prix :</u><br />
<b>'.$nb_lignes_calcul.'</b> + <b>'.$nb_mots_gras_calcul.'</b> = <b>'.$prix_total.' euros</b>.<br />
Le prix total est de <b>'.$prix_total.' euros</b>.';
?>