Intentar eliminar la URL completa que se devuelve a imgurl: por lo general, devuelve algo como http://localhost/wordpress/wp-content/uploads/nombre de archivo.jpg
o http://localhost/wordpress/wp-content/uploads/images/filename.jpg
Me gustaría eliminar todo excepto filename.jpg y devolverlo a ahng_photos_upload_image. Elimina todo hasta la última barra diagonal. ¿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();
}
Andy
No necesita jQuery para eso, simplemente el viejo JavaScript servirá 🙂
alert('http://localhost/wordpress/wp-content/uploads/filename.jpg'.split("https://stackoverflow.com/").pop());
En tu caso:
var filename = imgurl.split("https://stackoverflow.com/").pop();
-
Funciona de maravilla. Gracias. Tendré que hacer una búsqueda para ver cómo funcionan split() y pop().
– usuario1219691
19 de febrero de 2012 a las 23:15
-
@nevermind En realidad, las rutas en Linux son
/
. Están` in windows. But it wouldn't matter anyway, since we're talking about URLs which are always
/` y no caminos.– Andy
29 de agosto de 2015 a las 19:53
-
@Andy si la ruta proviene de una URL, puede funcionar, pero cuando intenta cargar un archivo, el valor de la entrada sería algo así como: “C:\fakepath\filename.txt” (probado en mi localhost en Ubuntu en Chromium ). Entonces, por esa razón, personalmente prefiero la forma de expresión regular.
– usuario3845133
30 de agosto de 2015 a las 9:24
puede usar una expresión regular para lograr esto …
var file = imgUrl.replace(/^.*[\\\/]/, '');
Ahora el archivo consistiría solo en el nombre del archivo ..
Si está bastante seguro de que las URL no tienen cosas divertidas como hashes o parámetros, una expresión regular como esta lo haría:
var filename = imgurl.replace(/^.*\/([^/]*)$/, "$1");
Además: no olvides declarar “imgurl” con var
y deberías probablemente usar .prop()
en vez de .attr()
si su versión de jQuery es 1.6 o posterior:
var imgurl = jQuery('img', html).prop('src');
Además, jQuery convierte internamente la forma de dos argumentos de la función en esto:
var imgurl = jQuery(html).find('img').prop('src');
así que también podría codificarlo de esa manera.
Una opción más:
var filename = imgurl.substring(imgurl.lastIndexOf("https://stackoverflow.com/") + 1);
Aquí tienes
var filename = imgurl.split("https://stackoverflow.com/").slice(-1);
¡Buena suerte!
Comunidad
Prueba este:
imgurl.split("https://stackoverflow.com/").slice(-1);
Editar: Mira la versión de @Andy que usa el pop()
siendo este último más rápido que slice(-1)
.
sdw
Tenga en cuenta que si no sabe si tiene barras inclinadas hacia adelante o hacia atrás, es mejor que use la versión RE de división:
"path".split(/[\/\\]/).slice(-1)
txt.substring(txt.lastIndexOf(“/”) + 1)
– Kamyar Nazari
19 de febrero de 2012 a las 21:22