05. januar 2005 - 14:09
Der er
6 kommentarer og 1 løsning
reg udtryk - fjerne variabel fra adresselinie
Hej hej, Håber der er en af jer der vil hjælpe mig med et regulært udtryk (eller en algoritme). Jeg skal kunne tage adresselinien og fjerne en variabel helt. f.eks. $strUrl = "minfil.php?var1=342fsdf&var2=fdsfdsf&var3=234234234"; så skal jeg f.eks. kalde en funktion: fjernVariabelFraUrl("var1",$strUrl); og den skal så fjerne var1=342fsdf& (dvs. til og med efterfølgende & hvis der er et) og returnere: minfil.php?var2=fdsfdsf&var3=234234234 På forhånd tak :)
Annonceindlæg fra Computerworld
05. januar 2005 - 20:26
#1
function fjernVariabelFraUrl( $var, $url ) { $res = preg_replace( "/(.*[\?&])($var=.*?)(&.*)/", "\\1\\3", $url ); return str_replace( "&&", "&", str_replace( "?&", "?", $res ) ); }
05. januar 2005 - 20:54
#2
Den virker desværre ikke hvis det er den sidste variabel i url'en der skal fjernes $strUrl = "minfil.php?var1=342fsdf&var2=fdsfdsf&var3=234234234"; echo fjernVariabelFraUrl("var3",$strUrl); Jeg kan desværre ikke selv gennemskue om det er hurtigt rettet i udtrykket, da jeg er en hat til regulære udtryk :/
05. januar 2005 - 21:25
#3
Prøv lige med: function fjernVariabelFraUrl( $var, $url ) { $res = preg_replace( "/(.*[\?&])($var=.*?)(&.*)?/", "\\1\\3", $url ); return str_replace( "&&", "&", str_replace( "?&", "?", $res ) ); }
05. januar 2005 - 21:31
#4
Desværre ikke... Den fjerner godt nok var3= men ikke hele indholdet af variablen...
05. januar 2005 - 22:40
#5
Ok, mindre ændring så, denne burde virke: function fjernVariabelFraUrl( $var, $url ) { $res = preg_replace( "/^(.*[\?&])($var=.*?)(|&.*)?$/", "\\1\\3", $url ); return str_replace( "&&", "&", str_replace( "?&", "?", $res ) ); }
06. januar 2005 - 00:12
#6
Super fedt! Det virker perfekt! Tak for hjælpen ;)))))
06. januar 2005 - 00:14
#7
Så lidt :)
Vi tilbyder markedets bedste kurser inden for webudvikling