Dennis: Text nach 150 Zeichen schneiden und nicht alles mitzählen

Beitrag lesen

Hi AllesMeins,

Hat irgendwer eine Idee wie sich soetwas realisieren lässt?

Eine fertige Funktion dafür kenne ich nicht - es wird aber mit den String-Funktionen lösbar sein. Ich habe mich gerade mal hingesetzt und ein kleines Script geschrieben, was die gewünschte Aufgabe löst:

<?php  
  
// Konfiguration  
$string  = "Ein kleiner __und sinnloser__ Text mit Lore Ipsum";  
$letters = 17;  
  
// Ein paar Variablen zum Kontrollieren des Programmablaufes  
$position    = 0;     # Aktuelle Position im String  
$counter     = 0;     # Zähler, wie viele Buchstaben wir schon haben  
$in_nocount  = false; # Befinden wir uns innerhalb von __ ?  
$new_string  = "";    # Neuer String  
$rest_string = "";    # Restlicher String  
  
// Solange wir noch nicht genug Buchstaben haben  
while($counter < $letters)  
{  
    // Nächsten Buchstaben herrausschneiden  
    $char = substr($string, $position, 1);  
    // Sofern es den Anfang oder das Ende eines __ Bereiches darstellt  
    if($char == "_" AND substr($string, $position + 1, 1) == "_")  
    {  
        $new_string .= "__";  
        // Setze Kontrollvariable $in_nocount auf deren Gegenteil  
        $in_nocount = $in_nocount ? false : true;  
        // Und arbeite zwei Zeichen weiter im String  
        $position += 2;  
    }  
    // andernfalls, wenn wir irgendwo im Text sind  
    else  
    {  
        // Zeichen dem neuen String hinzufügen  
        $new_string .= $char;  
        // Wenn wir uns nicht in einem __ Bereich befinden, Counter  
        // hochzählen  
        if(!$in_nocount)  
        {  
            $counter ++;  
        }  
        // Position um eins erhönhen für nächsten Durchlauf  
        $position ++;  
    }  
}  
// Rest des Strings ins $rest_string schreiben  
$rest_string = substr($string, $position);  
  
// Ausgabe der Daten  
echo "<pre>";  
echo "Vorgabe:      $string\n";  
echo "Neuer String: $new_string\n";  
echo "Rest String:  $rest_string";  
echo "</pre>";  
  
?>

Soweit ich das bis jetzt getestet habe, funktioniert es einwandfrei.

MfG, Dennis.

--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Die FlatBox 0.3 mit Dokumentation ist da!
Man sollte nie aufhören zu fragen (Albert Einstein)
... aber natürlich erst, nachdem man sämliche FAQ's und Archive durchgelesen hat :-P