[php]Te lang woord veranderen in -\n

Pagina: 1
Acties:

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 23:05
Hoe zorg ik ervoor dat wanneer een woord van meer dan 80 karakters heeft hij na de 80ste karakter een -\n neer zet?
Ik ken de function wordwrap() al maar die telt ook een spatie mee. Bijv. ik heb het volgende

ik moest bij de dokter aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
zeggen. Dat alleen bij de 80ste a een -\n komt. Met wordwrap worden nl. deze ook meegetelt (ik moest bij de dokter)

Weet iemand een oplossing?

Verwijderd

Heel toevallig heb ik precies hetzelfde probleem. Ik heb wat gebrainstormed met een aantal anderen, daar is wel wat nuttigs uitgekomen (Testing wide posts). Een echte oplossing heb ik niet gevonden. Ik laat het voorlopig maar op de browser aankomen, en ja dan wordt vaak de layout verneukt. Zolang niemand een simpele en snelle manier heeft gevonden zit er even niks op ben ik bang ;(

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 23:05
Ik heb ook ff zitten na denken. Dit heb ik tot nu toe.
PHP:
1
2
3
4
5
6
7
<?
$string= "Ik moest bij de dokter aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa zeggen";
$array = explode(" ",$string);
$i= strlen ($array);
$array[$i]=substr($array[$i],0,30)."<br>".substr($array[$i],30)."<br>";
echo join(" ",$array);
?>

Ik moet er alleen nog voorzorgen dat hij steeds om de 30 weer opnieuw begint. Bijv. heb de eerste 30 a's gehad. daarna moet hij weer 30a's laten zien. Enzovoort.

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 23:05
Oke ik heb de function gevonden.
Moet alleen nog ervoor zorgen dat tussen de < > niet de worden ingekort.
Dit is ie.
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
function wordwrap_msg($msg, $maxwordlen=37) {
    $eachword = explode(" " , eregi_replace("<BR>"," ",$msg));
      for ($i=0; $i<count($eachword); $i++) {
        if (strlen($eachword[$i])>$maxwordlen) {
          $msg = eregi_replace($eachword[$i], chunk_split($eachword[$i],$maxwordlen), $msg);
        }
      }
    return $msg;
}
?>