allora, con wordwrap puoi forzare il br spezzando le parole, ma cosi te lo ritrovi ogni N caratteri sia che ci sia la parola lunga che no..
codice:
$stringa = 'frase con una parola maggiore di quello che voglio 0123456789 (8 caratteri)';
echo wordwrap ($stringa , 8, "
", 1);
altrimenti prova questa funzione, l'ho scritta al volo :
codice:
<?php
function spezzaparole($stringa, $caratteri) {
$parole = explode(' ', $stringa);
$numero_cicli = count($parole);
$result = "";
for($i = 0; $i < $numero_cicli; $i++) {
$lunghezza_parola = strlen($parole[$i]);
if($lunghezza_parola>$caratteri) {
$pezzi_parola = $lunghezza_parola/$caratteri;
$parola_nuova = "";
// se l'ultimo pezzo è minore del numero di caratteri devo aggiungere 1
if($lunghezza_parola%$caratteri) {
$pezzi_parola++;
}
for($z = 0; $z<($pezzi_parola-2); $z++) {
$parola_nuova .= substr($parole[$i], $z*$caratteri, $caratteri)."
";
}
// l'ultimo pezzo lo tratto diversamente, aggiungo solo lo spazio
$parola_nuova .= substr($parole[$i], $z*$caratteri).' ';
$result .= $parola_nuova;
} else {
$result .= $parole[$i].' ';
}
}
return $result;
}
$stringa = 'frase con una parola maggiore di quello che voglio 0123456789 (8 caratteri)';
echo spezzaparole($stringa, 8);
?>
ciao