Das etwas andere wordwrap()

diggity

Erfahrenes Mitglied
Hi Leute,
ich such nach einer Möglichkeit bzw. nach einer Funktion die ähnlich arbeitet wir wordwrap.
Mit dem Unterschied dass ich nicht nach x Zeichen einen Umbruch will sondern nach x Wörtern!

Hab schon bei php.net geschaut, hat auf den ersten Blick eh schon so ausgesehen wie wenn da gleich was passendes wär:

PHP:
$text = "Der schnelle braune Fuchs sprang über den faulen Hund.";
$neuertext = wordwrap( $text, 20 );

echo "$neuertext\n";

sollte folgende Ausgabe liefern:
Code:
Der schnelle braune 
Fuchs sprang über 
den faulen Hund.

Bei mir siehr das dann aber folgendermaßen aus:
Code:
Der schnelle braune Fuchs sprang über den faulen Hund.

Alles in einer Wurst. Code 1:1 wie auf php.net.

Gibts da noch andere Möglichkeiten?
 
Ich hab einen kleinen Denkanstoß für dich. Das snippet verwend ih für kürzen von texten. schreibes auf wordwrap um und es .
Code:
function wordlimit($string, $length = 50, $ellipsis = "...")
{
   $paragraph = explode(" ", $string);

   if($length < count($paragraph))
   {
       for($i = 0; $i < $length; $i++)
       {
           if($i < $length - 1)
               $output .= $paragraph[$i] . " ";
           else
               $output .= $paragraph[$i] . $ellipsis;
       }

       return $output;
   }

   return $string;
}
 
Ja hab ich schon gesehen, aber die Sachen sind viel zu komplex. Hab auch schon ein paar ausprobiert, keines funktionierte so wie ich es will ;>
Gibt es da eine einfachere Lösung?

€: Obiges probier ich gleich.

€2: Bekomms net hin ...
 
Zuletzt bearbeitet:
Bekomms net hin ...
Hui, was für präzise Infos! Ich komm aus dem Analysieren gar nicht mehr raus…

Mal im Ernst: Was genau funktioniert denn nicht? Irgendwelche Fehlermeldungen? Ein unerwünschter Output? Ein paar Infos mehr wären schön.
 
Die Funktion sieht jetzt so aus:

PHP:
<?
function wordlimit($string, $length = 20, $ellipsis = "<br />")
{
	$paragraph = explode(" ", $string);
	if($length < count($paragraph)) {
       for($i = 0; $i < $length; $i++) {
			if($i < $length - 1) {
				$output .= $paragraph[$i] . "&nbsp;";
			} else {
				$output .= $paragraph[$i] . $ellipsis;
			}
		}
		return $output;
	}
	return $string; //echo $string gibt den input 1:1 aus ..
}
//aufruf ...
$text = "Hui, was für präzise Infos! Ich komm aus dem Analysieren gar nicht mehr raus";
wordlimit($text);
?>

Es wird nichts ausgegeben. Hab mal mein Bestes gegeben die Funktion abzuändern, aber mein Bestes ist in PHP halt oft zu wenig +gg+
 
Ahja, hab ja gewusst dass ich da noch irgendwo ein Echo reinmachen muss ;>
Mit Funktionen mach ich nie was, deswegen hab ich das jetzt irgendwie übersehen.

Ergebnis: Der Input-Text wird 1:1 ausgegeben ohne Änderung.
 
Zurück