Regex для добавления и замены частей URL - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь помочь приятелю использовать его Facebook для публикации на своем веб-сайте. Мне удалось создать посты из RSS-канала его стены, но в ленте любые изображения отображаются в виде миниатюрных миниатюр.

Разница между миниатюрой изображения Facebook и ее полноразмерным аналогом заключается в следующем:

большой палец - https://fbcdn -photos-a.akamaihd.net / hphotos-ak-ash4 / 378108_348325051862306_118443001517180_1297951_1051469646_s.jpg

полный - https://fbcdn -sphotos-a.akamaihd.net / hphotos-ak-ash4 / s720x720 / 378008_348325051862306_118443001517180_1297951_1051469646_ n .jpg

Я выделил различия.

Так что я ищу способ сделать такую ​​замену, и я подумал, что регулярное выражение было подходящим способом, но я не мог обернуть голову вокруг чего-то подобного.

Ответ и объяснение были бы весьма полезны. Заранее спасибо.

edit: Я бы, вероятно, сделал замену в jQuery.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2012

Вот окончательное решение, которое я использовал, на случай, если кому-то будет интересно.Это переключит все изображения, которые являются миниатюрами Facebook, из ленты RSS с их полноразмерными аналогами:

$("img[src^='https://fbcdn-photos-a.akamaihd.net']")
.each(function()
{ 
  this.src = this.src.replace(/(\/[^/]*)s\.jpg$/, '/s720x720$1n.jpg');
});​
0 голосов
/ 16 февраля 2012
var thumb_url = 'https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/378108_348325051862306_118443001517180_1297951_1051469646_s.jpg';

var full_url = thumb_url.replace(/(\/[^/]*)s\.jpg$/, '/s720x720$1n.jpg');

Объяснение:

/(\/[^/])s.jpg/ соответствует косой черте \/, за которой следуют многие символы косой черты [^/]*, за которыми следует s.jpg.Это захватывает все от прямого слеша до s в $ 1.

Затем он заменяет все совпадение: (в данном случае /378108_348325051862306_118443001517180_1297951_1051469646_s.jpg)

На: /s720x720$1n.jpg, где $1:

/378108_348325051862306_118443001517180_1297951_1051469646_
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...