blogのRSSを取得するので画像のURLは必ず example.jp/img/ 以下となります。
jpg か gif かはわかりません。
=============
テストの記事
<img src="http://example.jp/img/test.jpg"><img src="http://example.jp/img/test.gif">
本文です。
=============
取得したいのは、「http://example.jp/img/test.jpg」
となります。
誰か助けてください。
以下のようなjavascriptを書いているのですが、うまく取得できません。
function feedLoaded(result) {
if (!result.error) {
// Grab the container we will put the results into
var container = document.getElementById("content");
container.innerHTML = '';
var htmlstr = "";
// Loop through the feeds, putting the titles onto the page.
// Check out the result object for a list of properties returned in each entry.
// http://code.google.com/apis/ajaxfeeds/documentation/reference.html#JSON
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
var img = entry.content.match(/http:\/\/.*\.example\.jp\/img\/.+\/[a-z0-9\.]+\.(jpg|gif)/i);
htmlstr += '<img src="'+ img +'" width="60" />';
}
container.innerHTML = htmlstr;
}
}
var img = entry.content.match(/(http:\/\/.*?\.?example\.jp\/img\/[a-z0-9\.]+?\.(jpg|gif))/i)[1];
でどうでしょうか?
まずサブドメインのマッチの為に「http:\/\/.*\.example\.jp\」とexampleの前に「\.」があるので「http://example.jp」にはマッチしません。また「\/img\/.+\/」とあるので「http://example.jp/img/test.jpg」にはマッチせず「http://example.jp/img/foo/test.jpg」にマッチする様になっています。
さらに最長マッチになっているので、「http://example.jp/img/test.jpg http://example.jp/img/test.gif」とあった場合にこれが続けてマッチしてしまっています。これは「?」を付ける事で最短マッチになります。
最後に取りたい部分「http://example.jp/img/test.jpg」をグループとして「()」を付ける事でmatch関数の結果(配列)の1番目としてアクセス出来ます。
ただし、いずれにもマッチしなかった場合にはmatchがnullを返すので、ここはチェックが必要です。