2015-05-26 40 views
0

我有一個下載JSON訂閱源的iOS應用程序。除了剩下的一個元素之外,我已經設法解析所有的東西,這就是圖像。在JSON中解析<img src>標記 - iOS

我正在下載的JSON訂閱源來自PHP腳本,它將某些RSS訂閱源轉換爲JSON。因此,爲什麼在包含圖像的JSON訂閱源的其中一個元素中存在HTML圖片標籤。

我使用下面的代碼來訪問之類的標題,日期,鏈接網址,等...和它的偉大工程:

NSArray *titles = [[[[data_dict objectForKey:@"rss"] valueForKey:@"channel"] valueForKey:@"item"] valueForKey:@"title"]; 

你可以從我上面的代碼看,標題存儲在名爲「title」的JSON標籤中。非常容易解析。這些圖像存儲在一個名爲「description」的標籤中。

該標籤如何還包含文本以及圖片URLS。那麼如何解析<img src>標籤呢?

這裏是JSON描述標籤之一:

enter image description here

我如何去解析陣列中的圖片鏈接?

感謝您的時間,丹

+0

你可以使用NSAttributedString並讀取HTML文本。 – Larme

回答

1

請與下面的代碼嘗試 -

NSString *yourHTMLSourceCodeString = @""; 

    NSError *error = NULL; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(<img\\s[\\s\\S]*?src\\s*?=\\s*?['\"](.*?)['\"][\\s\\S]*?>)+?" 
                     options:NSRegularExpressionCaseInsensitive 
                     error:&error]; 

[regex enumerateMatchesInString:yourHTMLSourceCodeString 
         options:0 
          range:NSMakeRange(0, [yourHTMLSourceCodeString length]) 
        usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { 

         NSString *img = [yourHTMLSourceCodeString substringWithRange:[result rangeAtIndex:2]]; 

         NSURL *candidateURL = [NSURL URLWithString:img]; 

         if (candidateURL && candidateURL.scheme && candidateURL.host) 
         { 
          NSLog(@"img src %@",img); 
         } 


        }]; 

更新 同樣的事情,可以使用下面的正則表達式的變化來完成 -

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(<img\\s[\\s\\S]*?src\\s*?=\\s*?['\"]((http|https)://.*?)['\"][\\s\\S]*?>)+?" 
                      options:NSRegularExpressionCaseInsensitive 
                      error:&error]; 
+0

好吧,這是非常棒的解決方案!只有一個問題,在這些提要中的某個時候,其他隨機圖像會出現在描述標籤中,如以「.img」結尾的圖像或鏈接末尾甚至沒有圖像擴展的圖像鏈接。我如何區分這些鏈接?我只想顯示實際上是網站Feed一部分的圖片,而不是像「rssbutton.img」這樣的隨機圖片? – Supertecnoboff

+0

請檢查我是否根據您的需要更新了以上代碼 –

+0

好吧,或多或少的作品。謝謝:) – Supertecnoboff