Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » preg_replace (problem für profis) Antworten
preg_replace (problem für profis)

Paulaner
Pixelschubser


Beiträge: 1


Hallo leutz,

bin neu hier und hoffe sehr, dass es hier jemand gibt, der mir helfen kann.

mein problem: mein code schneidet 2 buchstaben ab, warum?

mein code:




1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11:
$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.

bitte helft mir!

Diese Nachricht wurde geändert von: Paulaner
  Profil   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Hm, was willst du mit der Funktion überhaupt bewirken? Vielleicht lässt sich das Problem ja mit einem anderen Ansatz eifnach umgehen.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


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.

---
Weaverslave

  Profil   Website   Editieren   Zitieren
 

Antworten
Nach oben