2014-11-18 1 views
0

У меня есть приложение, которое хранит относительный путь файла изображения в БД. Мне нужно удалить любой полный URL-адрес из пути, прежде чем вставлять его в базу данных. Я использовал следующее.Удалить полный URL-адрес из пути к файлу jquery

$('img', this).attr('src').replace(/https?:\/\/[^\/]+/, ''); 

Однако, это по-прежнему ставит перед/пути изображения

я начинаю с этим http://192.168.72.80/upload/11/img_3070.jpg

и я хочу закончить с этим. upload/11/img_3070.jpg

URL-адрес может быть IP-адресом, поэтому я должен иметь возможность работать с обоими сценариями.

Благодаря

ответ

1
var url='http://192.168.72.80/upload/11/img_3070.jpg'; 

var img=url.toString().match(/\/\/[^\/]+\/([^\.]+)/)[1]; 

http://jsfiddle.net/040o8zt0/

EDIT 2:

var url='http://192.168.72.80/upload/11/img_3070.jpg?id=4'; 
var img=url.toString().match(/[^\/?#]+(?=$|[?#])/); 
+0

Спасибо, но теперь это удаление.jpg с конца URL-адреса изображения Я получаю эту загрузку/AA/img_3074 – Rob

+0

Прошу прощения, я не проверял результат. Я добавил новое решение. – dm4web

+0

Спасибо за обновление! – Rob

1

Чтобы получить путь элемента изображения, при условии, что селектор $('img', this) возвращает правильный элемент, вы можете избежать регулярных выражений, потому что, честно говоря, это позволяет избежать проблем, которые приходят с краевыми-кейсами в регулярных выражениях и просто использовать created- <a> элемент, и его сопутствующие свойства:

var a = document.createElement('a'), 
    images = document.images; 

Array.prototype.forEach.call(images, function (img) { 
    a.href = img.src; 
    console.log(a.pathname); 
}); 

JS Fiddle demo.

Или использовать функцию:

function retrievePathName (img) { 
    var a = document.createElement('a'); 
    a.href = img.src; 
    return a.pathname; 
} 

var images = document.images; 

Array.prototype.forEach.call(images, function (imgNode) { 
    console.log(retrievePathName(imgNode)); 
}); 

JS Fiddle demo.

Для использования с подходом JQuery, вы можете:

var path = retrievePathName($('img', this).get(0)); 

Или:

var paths = $('img', this).map(function() { 
    return retrievePathName(this); 
}).get(); // returns an array of relative paths to the 'paths' variable 

Ссылки:

Смежные вопросы