2012-02-19 24 views
5

Đang cố gắng để loại bỏ các url đầy đủ đang được trở lại imgurl: thường trả về một cái gì đó giống như http://localhost/wordpress/wp-content/uploads/filename.jpg hoặc http://localhost/wordpress/wp-content/uploads/images/filename.jpgloại bỏ đường dẫn đầy đủ, giữ tên tập tin chỉ

Tôi muốn lột mọi thứ trừ filename.jpg và trở lại nó đến ahng_photos_upload_image. Bỏ tất cả mọi thứ sang dấu gạch chéo cuối cùng. Làm thế nào tôi có thể làm điều đó với 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) –

Trả lời

22

Bạn không cần jQuery cho rằng, chỉ đơn giản cũ JavaScript sẽ làm :)

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

Trong trường hợp của bạn:

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

Hoạt động như một sự quyến rũ. Cảm ơn. Tôi sẽ phải thực hiện tìm kiếm để xem công việc split() và pop() như thế nào. – user1219691

+0

@nevermind Trên thực tế, các đường dẫn trong linux là '/'. Chúng là '\' trong các cửa sổ. Nhưng dù sao cũng không quan trọng, vì chúng ta đang nói về các URL luôn luôn là '/' chứ không phải đường dẫn. – Andy

+1

@Andy nếu đường dẫn đến từ url có thể hoạt động, nhưng khi bạn cố gắng tải lên tệp, giá trị của đầu vào sẽ là: "C: \ fakepath \ filename.txt" (được thử nghiệm trên máy chủ cục bộ của tôi trên Ubuntu trong Chromium). Vì vậy, vì lý do đó, cá nhân tôi thích cách regex hơn. – nevermind

2

bạn có thể sử dụng một biểu thức chính quy theo thứ tự để đạt được điều này ..

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

Bây giờ các tập tin sẽ bao gồm các tên tập tin ..

+0

không hoạt động cho tôi .... –

1

Nếu bạn đang khá tự tin rằng các URL không có thứ hài hước như băm hoặc các thông số, một regex như thế này sẽ làm điều đó:

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

Ngoài ra: đừng quên khai báo "imgurl" với var, và bạn nên lẽ sử dụng .prop() thay vì .attr() nếu phiên bản của jQuery là 1.6 hoặc mới hơn:

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

cũng jQuer y chuyển nội bộ dạng hàm hai tham số thành hàm này:

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

để bạn cũng có thể mã theo cách đó.

0

Hãy thử điều này một:

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

Edit: Nhìn vào the version of @Andy người sử dụng phương pháp pop(), sau này là nhanh hơn so với slice(-1).

0

Ở đây bạn có

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

Chúc may mắn!

+0

Điều đó cũng hoạt động. Cảm ơn. – user1219691

1

Một lựa chọn nữa:

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

JS Fiddle demo.

0

Lưu ý rằng nếu bạn không biết nếu bạn có về phía trước hoặc dấu gạch chéo ngược, bạn nên sử dụng phiên bản RE của split:

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

Dưới đây là một câu trả lời rằng sẽ làm việc khi tên file của bạn là như ./file.jpg

var extension = fileName.slice((fileName.lastIndexOf(".") - 1 >>> 0) + 2); 
var baseName = fileName.replace(/^.*\/([^/]*)$/, "$1"); 
var path = fileName.replace(/(^.*\/)([^/]*)$/, "$1"); 
Các vấn đề liên quan