ich brauche eine funktion, die einen string nach einer bestimmten anzahl von zeichen abschneidet. die funktion soll dabei aber:
- nur nach ganzen wörtern schneiden
- und evtl. nach dem schnitt vorhandenen schließenden bbcode erhalten und an den geschnittenen string wieder anhängen (damit nicht tags geöffnet und nicht wieder geschlossen werden)
(der bbcode ist mit einer id markiert [b:die_id]text[/b:die_id], phpbb-style)
also aus "[b:wafasa54]das ist ein teststring mit viel text[/b:wafasa54]" sollte also werden "[b:wafasa54]das ist ein[/b:wafasa54]"
ich hab das jetzt versucht umzusetzen, aber irgendwo ist da der wurm drin...
der regepx macht zusammen mit preg_match_all nicht dass, was ich erwarten würde (da hab ich wahrscheinlich die funktion nicht verstanden...)
kann mir bitte jemand helfen
führt zu
- nur nach ganzen wörtern schneiden
- und evtl. nach dem schnitt vorhandenen schließenden bbcode erhalten und an den geschnittenen string wieder anhängen (damit nicht tags geöffnet und nicht wieder geschlossen werden)
(der bbcode ist mit einer id markiert [b:die_id]text[/b:die_id], phpbb-style)
also aus "[b:wafasa54]das ist ein teststring mit viel text[/b:wafasa54]" sollte also werden "[b:wafasa54]das ist ein[/b:wafasa54]"
ich hab das jetzt versucht umzusetzen, aber irgendwo ist da der wurm drin...
der regepx macht zusammen mit preg_match_all nicht dass, was ich erwarten würde (da hab ich wahrscheinlich die funktion nicht verstanden...)
kann mir bitte jemand helfen
PHP-Code:
// $string soll so gekürzt werden, dass er maximal $chars zeichen lang ist
function cut_words_string2($string, $chars, $bbuid = '')
{
if ( strlen($string) > $chars )
{
$bbcodes = array();
$words = explode(' ', $string);
$i = 0;
$string = '';
while( (strlen($words[$i]) + strlen($string) + 1) <= $chars )
{
$string .= $words[$i] . ' ';
$i++;
}
$scrap = '';
for($i; $i <= count($words); $i++)
{
$scrap .= $words[$i];
}
preg_match_all("/\[\/.+:$bbuid.+\]/", $scrap, $bbcodes);
return $string . implode('', $bbcodes);
}
}
$string = "<i>HTML? sollte nicht kursiv sein</i>
[i:50e41e5f96][b:50e41e5f96]bbcode[/b:50e41e5f96] sollte kursiv sein[/i:50e41e5f96]
:roll:";
echo cut_words_string2($string, 10, '50e41e5f96');
Array()
Kommentar