eso le pasa lo mismo que ya he dicho antes
coge el primer http que aperezca como parametro
pero no el ultimo
si la direcion es http://www.blabla.com/?url1=http://uno.com&url2=http://dos.com o http://www.blabla.com/?url1=http://uno.com?url2=http://dos.com
cogeria http://uno.com en vez de http://dos.com
La opcion correcta es la que dije en mi ultimo post:
usar la expresion X(!?Y) (encontrar x si y solo si no le sigue y)
y para este caso en particular seria:
Código PHP:
https?(:|%3a)(/|%2f)(/|%2f)(?!.*https?(:|%3a)(/|%2f)(/|%2f).*)
Esto si que cogeria http://dos.com pues este es el ultimo http (el unico que cumple ser "http..." y no estar seguido de nada que contenga otro "http...")
No pongo el "=" porque yo ya trabajo directamente con la query, asi que no corro peligro de coger el http original, pero si eso se podria añadir igualmente a la expresion regular
Nota: ya me doy cuenta que no eso solo me sirve para coger donde empieza el ultimo http y que luego deberia cortar en el & o # segun el caso (porque no se puede haber a las brabas, ya que el "#" o el "&" podria ser parte de la propia url que quiero capturar) por eso no añado en la expresion regular que busque hasta final de cadena o hasta alguno de esos caracteres ;)