Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.
Die letzten 5 Postings in diesem Thema » Alle anzeigen
von subjective
Deine Treffer umfassen halt auch diese beiden Zeichen (eines am Anfang und eines am Ende). Dies ist in der RegEX so definiert worden. Du kannst nun entweder die RegEx so umstellen, dass sie diese beide Zeichen gar nicht mehr trifft oder die beiden Zeichen in Gruppierungen (Subpatterns) legen lassen und beim Ersetzen diese wieder einfügen.
von languitar
Hm, was willst du mit der Funktion überhaupt bewirken? Vielleicht lässt sich das Problem ja mit einem anderen Ansatz eifnach umgehen.
von Paulaner
Hallo leutz,
bin neu hier und hoffe sehr, dass es hier jemand gibt, der mir helfen kann.
$text="so bla bla [-][-][ueberschrift]Hallo[/ueberschrift][-][-]Dies ist nun der Text[-] so ein schöner Text";
function zeilen($match)
{
$vorne = str_replace("[-]", "", $match[1]);
$hinten = str_replace("[-]", "", $match[3]);
$mei = $vorne."[ueberschrift]".$match[2]."[/ueberschrift]".$hinten;
return $mei;
}
$text = preg_replace_callback("|[a-zA-Z0-9](.*)\[ueberschrift\]
(.*)\[\/ueberschrift\](.*)[A-Za-z0-9]|isU","zeilen", $text);
die ausgabe:
1:
2:
o bla bla [ueberschrift]Hallo[/ueberschrift]ies ist nun der Text[-] so
ein schöner Text
meine Frage, warum wird das S und das D abgeschnitten?
Ziel des Codes ist es alle [-] rund um die [ueberschrift] wegzuschneiden, die im text aber stehen zu lassen.