str1="http://www.miweb.com/carpeta/doc.htm";
str2="http://www.miweb.com/carpeta/otracarpeta/miotrodoc.htm";
Al ejecutar la funcion con str1 (modelo) y str2 (se que va a ser la que variará), deberia devolver "otracarpeta/miotrodoc.htm"; exactamente, es decir, lo que no tiene en comun con str1.
Algo he hecho, pero resulta demasiado lento, y si no lo ejecuto en un setTimeout("function()",1); no me funciona, me da que el script se ejecuta por demasiado tiempo, como si hubiera hecho un bucle infinito. Mi codigo es este:
Código PHP:
function prepararRUTA(ruta) {
// (por bloques de directorios)
ruta=ruta.split("/");
direSplit=window.location.href.split("/");
indice=0;
while(ruta[indice]==direSplit[indice] && indice<ruta.length && indice<direSplit.length) {
ruta[indice]="eliminar";
indice++;
}
for(a=0;a<ruta.length;a++) //eliminamos los elementos "eliminar"
if(ruta[a]=="eliminar") { ruta.splice(a,1); a--; }
ruta=ruta.join("/");
return ruta;
}
Lo explicare un poco. Divide ruta en directorios (split("/")) y hace lo propio con la direccion actual (que seria str1, la url fija). Mientras los elementos de ruta y direSplit sean iguales, a ese elemento de ruta que se está tratando se le otorga el valor "eliminar". El bucle while termina si los directorios llegan a ser diferentes o si indice es mayor que alguno de los dos length (de ruta y direSplit). Despues recorremos ruta para localizar los elementos que contengan "eliminar" y los eliminamos del array (modificando su length, con el metodo splice poco conocido -al menos por mi-). Entonces deshacemos el split("/") con join("/") y la cadena esta preparada para ser devuelta.
Lo dicho, funcionar me funciona, pero es demasiado lento. Ojala se les ocurra alguna manera mas sencilla para solucionarlo.
Un saludo