regexp
Nisbo
- php
0 Localhorst0 Dennis
Moin Moin
irgendwie habe ich momentan einen kleinen Hänger :D
geht darum aus einer URL einen Parameter zu filtern
[PHP]$ref = "http://www.domain.de/datei?sprache=deutsch¶meter=das_hier_soll_urbrig_bleiben&bla=blub&foo=bbbbbbb";
$ref2 = $ref;
$ref = preg_replace("/www.domain.([a-z]{2,3})/datei(.*)&guterparameter=(.*)&(.*)/","<b>[URL]www.domain.\1/datei?guterparameter=\3[/URL]</b>",$ref);
echo $ref."<br>".$ref2;[/PHP]
gibt mir noch das aus:
[CODE]http://www.domain.de/datei?guterparameter=das_hier_soll_urbrig_bleiben&bla=blub[/CODE]
ich möchte aber nur:
[CODE]http://www.domain.de/datei?guterparameter=das_hier_soll_urbrig_bleiben[/CODE]
also OHNE: [B]&bla=blub[/B] hinten dran
dabei möchte ich mich jetzt NICHT auf [B]bla=[/B] festlegen, denn der querystring schaut teilweise immer anders aus
eigendlich dachte ich das:
[B]&guterparameter=(.*)&(.*)[/B]
mir nur das "suchwort" rausfiltert, also alles hinter [B]guterparameter=[/B] bis zum nächsten kaufmannsund
jemand ne idee ?
Servus,
du kannst den Url auch mit parse_url() zerlegen
http://www.php.net/parse_url
Das wird bestimmt schneller gehen.
Hi Nisbo,
preg_replace("/www.domain.([a-z]{2,3})/datei(.*)&guterparameter=(.*)&(.*)/","<b>[URL]www.domain.\1/datei?guterparameter=\3[/URL]</b>",$ref);
echo $ref."<br>".$ref2;[/PHP]gibt mir noch das aus:
[CODE]http://www.domain.de/datei?guterparameter=das_hier_soll_urbrig_bleiben&bla=blub[/CODE]
Nun, überlegen wir mal - in deinem RegEx hast du guterparameter=(.*)& stehen (das = musst du übrigens nicht escapen, sofern du es nicht als Delimiter verwendest).
Das .* sucht sich natürlich immer _so viel wie möglich_! Das ist das Grundprinzip von regulären Ausdrücken - du darfst bzw. kannst an dieser Stelle also nicht .* verwenden, weil der Punkt ja für beliebige Zeichen passt.
Da die Parameter durch & getrennt sind musst du sagen „beliebig viele Zeichen außer &“ - das geht in regulären Ausdrücken über Zeichenklassen:
guterparameter([^&]*)&
Passe es auf diese Weise an, alles was danach ist kannst du dann sogar noch entfernen und es sollte funktionieren.
MfG, Dennis.