Lieber Marc,
ich müssste mehrere Text automatisch nach ~250 Zeichen kürzen.
Also substr($string, 250) oder so ähnlich.
Allerdings sollen in einigen dieser Texte einige Wörter in eckige Klammern gefasst werden, um damit zu verhindern das dieses Wort (oder dieser Satz) abgeschnitten wird. Ich muss also irgendwie ein "Kürze den Text nach 250 Zeichen, solange diese Stelle nicht in den eckigen Klammern liegt" ansonsten soll erst nach der schliessenden eckigen Klammer gekürzt werden. Hat irgendwer einen Tipp für mich, wie sich das realisieren lässt?
Angenommen Du hast Deinen Text in $text abgelegt.
$text_gekuerzt = ""; // hier kommt das Endergebnis rein
$text_kurz = substr($text, 0, 250);
// testen, ob gegen Ende eine "[" vorkommt...
if(strrpos($text_kurz, "[") > 0)
{
// Text ist zu früh "abgeschnitten" worden?
$klammer_auf = strrpos($text_kurz, "[");
$klammer_zu = strrpos($text_kurz, "]");
if($klammer_zu > 0 && $klammer_zu > $klammer_auf)
{
// Alles palletti! Klammer innerhalb des Ausschnitts auch wieder geschlossen
$text_gekuerzt = $text_kurz;
}
else
{
// PROBLEM!!! Text zu früh gekürzt!
// -> letzte schließende eckige Klammer finden und Text erweitern
$rest_text = substr($text, 251, strlen($text));
$klammer_zu = strpos($rest_text, "]");
$text_gekuerzt = $text_kurz.substr($rest_text, 0, $klammer_zu);
}
}
// gekuerzter Text liegt nun in $text_gekuerzt vor
Dieser Schnipsel ist ungeprüft! Ausserdem schließt dieser Code einen mangelhaft verklammerten Text nicht aus!
Liebe Grüße aus Ellwangen,
Felix Riesterer.