2012-02-19 20 views
5

Próbując usunąć pełny adres URL, który jest zwrócony do imgurl: Zwykle zwraca coś http://localhost/wordpress/wp-content/uploads/filename.jpg lub http://localhost/wordpress/wp-content/uploads/images/filename.jpgusunąć pełną ścieżkę, zachować nazwę pliku tylko

Chciałbym rozebrać wszystko oprócz filename.jpg i powrotu do ahng_photos_upload_image. Pozbądź się wszystkiego do ostatniego ukośnika. Jak mogę to zrobić z 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) –

Odpowiedz

22

Nie trzeba jQuery za to, po prostu stary JavaScript zrobi :)

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

W twoim przypadku:

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

działa jak czar. Dzięki. Będę musiał przeprowadzić wyszukiwanie, aby zobaczyć, jak działają funkcje split() i pop(). – user1219691

+0

@nevermind Właściwie ścieżki w systemie Linux to '/'. Są '\' w oknach. Ale i tak nie ma to znaczenia, ponieważ mówimy o adresach URL, które zawsze są '/', a nie ścieżkami. – Andy

+1

@Andy, jeśli ścieżka pochodzi z adresu URL, może działać, ale gdy spróbujesz przesłać plik, wartość wejścia będzie następująca: "C: \ fakepath \ filename.txt" (testowane na moim lokalnym hostsie na Ubuntu w Chrom). Z tego powodu osobiście wolę sposób wyodrębniania. – nevermind

2

można użyć wyrażenia regularnego w celu Aby to osiągnąć ..

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

Teraz plik będzie składać się tylko z nazwy pliku ..

+0

nie działa dla mnie .... –

1

Jeśli jesteś całkiem pewny, że adresy URL nie mają śmieszne rzeczy jak skrótów lub parametrów, regex jak byłoby to zrobić:

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

też: nie zapomnij zadeklarować „imgurl” z var i należy prawdopodobnie.prop() użycie zamiast .attr() jeśli wersja jQuery 1.6 lub nowszy:

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

również jQuer y wewnętrznie przekształca tę dwuargumentową postać funkcji w:

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

, więc równie dobrze można to zakodować.

0

Spróbuj tego:

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

Edit: Spójrz na the version of @Andy który wykorzystuje metodę pop(), przy czym ten ostatni szybciej niż slice(-1).

0

Tutaj masz

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

Powodzenia!

+0

To działa również. Dzięki. – user1219691

1

Kolejną opcją:

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

JS Fiddle demo.

0

Należy pamiętać, że jeśli nie wiem, czy masz do przodu lub do tyłu, ukośniki, jesteś lepiej wyłączyć za pomocą wersji RE dzielone: ​​

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

Oto odpowiedź, że będzie działać, gdy nazwa pliku jest jak ./file.jpg

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