2012-02-19 23 views
5

Tratando de eliminar la URL completa que está siendo devuelto a imgURL: devuelve lo general, algo así como http://localhost/wordpress/wp-content/uploads/filename.jpg o http://localhost/wordpress/wp-content/uploads/images/filename.jpgeliminar ruta completa, mantenga el nombre de archivo solamente

me gustaría cortar todo a excepción filename.jpg y vuelta a ahng_photos_upload_image. Desforre todo hasta la última barra inclinada. ¿Cómo puedo hacer eso con Jquery?

window.send_to_editor = function(html) { 
imgurl = jQuery('img',html).attr('src'); 
jQuery('#ahng_photos_upload_image').val(imgurl); 
tb_remove(); 
} 
+0

txt.substring (txt.lastIndexOf ("/") + 1) –

Respuesta

22

No es necesario jQuery para eso, simplemente vieja JavaScript hará :)

alert('http://localhost/wordpress/wp-content/uploads/filename.jpg'.split('/').pop());​​ 

En su caso:

var filename = imgurl.split('/').pop(); 
+0

funciona como un encanto. Gracias. Tendré que hacer una búsqueda para ver cómo funcionan el split() y el pop(). – user1219691

+0

@nevermind En realidad, las rutas en linux son '/'. Son '\' en windows. Pero no importaría de todos modos, ya que estamos hablando de URL que siempre son '/' y no caminos. – Andy

+1

@Andy si la ruta proviene de una url, puede funcionar, pero cuando intente cargar un archivo, el valor de la entrada será algo así como: "C: \ fakepath \ filename.txt" (probado en mi servidor local en Ubuntu en Cromo). Entonces, por esa razón, personalmente prefiero la forma de expresión regular. – nevermind

2

se puede utilizar una expresión regular con el fin para lograr esto ...

var file = imgUrl.replace(/^.*[\\\/]/, ''); 

Ahora el archivo puede consistir exclusivamente en el nombre del archivo ..

+0

no funciona para mí .... –

1

Si usted es bastante seguro de que las URLs no tienen cosas divertidas como hashes o parámetros, una expresión regular como esto lo haría:

var filename = imgurl.replace(/^.*\/([^/]*)$/, "$1"); 

también: no se olvide de declarar "imgURL" con var, y se debe, probablemente, .prop() uso en lugar de .attr() si su versión de jQuery es 1.6 o más reciente:

var imgurl = jQuery('img', html).prop('src'); 

también jQuer y convierte internamente la forma de dos argumentos de la función en esto:

var imgurl = jQuery(html).find('img').prop('src'); 

por lo que bien podría codificar de esa manera.

0

prueba este:

imgurl.split('/').slice(-1); 

Editar: Mira the version of @Andy que utiliza el método pop(), siendo este último más rápido que slice(-1).

0

Aquí tienes

var filename = imgurl.split('/').slice(-1); 

Buena suerte!

+0

Eso también funciona. Gracias. – user1219691

1

Una opción adicional:

var filename = imgurl.substring(imgurl.lastIndexOf('/') + 1); 

JS Fiddle demo.

0

Tenga en cuenta que si usted no sabe si tiene hacia adelante o hacia atrás barras, que es mejor usar la nueva versión de la división:

"path".split(/[\/\\]/).slice(-1) 
0

Aquí es una respuesta que funcionará cuando el nombre del archivo es como ./file.jpg

var extension = fileName.slice((fileName.lastIndexOf(".") - 1 >>> 0) + 2); 
var baseName = fileName.replace(/^.*\/([^/]*)$/, "$1"); 
var path = fileName.replace(/(^.*\/)([^/]*)$/, "$1"); 
Cuestiones relacionadas