iOS/UIKIT

JSON에서 받아온 homepage 데이터는 HTML 태그 제거

밤새는 탐험가89 2024. 10. 22. 01:22
{
  "response": {
    "header": {
      "resultCode": "0000",
      "resultMsg": "OK"
    },
    "body": {
      "items": {
        "item": [
          {
            "contentid": "126508",
            "contenttypeid": "12",
            "title": "경복궁",
            "createdtime": "20041230090000",
            "modifiedtime": "20241008170029",
            "tel": "",
            "telname": "",
            "homepage": "\u003Ca href=\"https://royal.khs.go.kr/ROYAL/contents/menuInfo-gbg.do?grpCode=gbg\" target=\"_blank\" title=\"새창 : 경복궁 홈페이지로 이동\"\u003Ehttps://royal.khs.go.kr/\u003C/a\u003E",
            "booktour": "1",
            "firstimage": "http://tong.visitkorea.or.kr/cms/resource/33/2678633_image2_1.jpg",
            "firstimage2": "http://tong.visitkorea.or.kr/cms/resource/33/2678633_image3_1.jpg",
            "cpyrhtDivCd": "Type3",
            "areacode": "1",
            "sigungucode": "23",
            "cat1": "A02",
            "cat2": "A0201",
            "cat3": "A02010100",
            "addr1": "서울특별시 종로구 사직로 161",
            "addr2": "",
            "zipcode": "03045",
            "mapx": "126.9769930325",
            "mapy": "37.5788222356",
            "mlevel": "6",
            "overview": "경복궁은 1395년 태조 이성계에 의해서 새로운 조선왕조의 법궁으로 지어졌다. 경복궁은 동궐(창덕궁)이나 서궐(경희궁)에 비해 위치가 북쪽에 있어 ‘북궐’이라 불리기도 했다. 경복궁은 5대 궁궐 가운데 으뜸의 규모와 건축미를 자랑한다. 경복궁 근정전에서 즉위식을 가진 왕들을 보면 제2대 정종, 제4대 세종, 제6대 단종, 제7대 세조, 제9대 성종, 제11대 중종, 제13대 명종 등이다. 경복궁은 임진왜란 때 상당수의 건물이 불타 없어진 아픔을 갖고 있으며, 고종 때에 흥선대원군의 주도 아래 7,700여 칸에 이르는 건물들을 다시 세웠다. 그러나 또다시 명성황후 시해사건이 일어나면서 왕조의 몰락과 함께 경복궁도 왕궁으로서의 기능을 상실하고 말았다. 경복궁에는 조선시대의 대표적인 건축물인 경회루와 향원정의 연못이 원형대로 남아 있으며, 근정전의 월대와 조각상들은 당시의 조각미술을 대표한다. 현재 흥례문 밖 서편에는 국립고궁 박물관이 위치하고 있고, 경복궁 내 향원정의 동편에는 국립민속 박물관이 위치하고 있다.\n\n* 주요 문화재\n1) 사적 경복궁\n2) 국보 경복궁 근정전\n3) 국보 경복궁 경회루\n4) 보물 경복궁 자경전\n5) 보물 경복궁 자경전 십장생 굴뚝\n6) 보물 경복궁 아미산굴뚝\n7) 보물 경복궁 근정문 및 행각\n8) 보물 경복궁 풍기대\n\n◎ 한류의 매력을 만나는 여행 정보\n미국의 국민 TV 쇼 ‘더 투나잇 쇼 스타링 지미 팰런’에서는 ‘BTS위크’라는 이름을 붙여 닷새간 BTS 특별 방송을 진행했는데, 그중 BTS가 ‘맵 오브 더 솔 : 페르소나’ 미니앨범 수록곡 ‘소우주’와 ‘IDOL’을 부른 장소가 화제다. 그 장소는 바로 조선시대의 궁궐 중 하나인 ‘경복궁’의 경회루와 근정전이다. 보랏빛 조명에 아름답게 빛나던 경복궁에서 한국의 과거를 체험해 보길 추천한다."
          }
        ]
      },
      "numOfRows": 1,
      "pageNo": 1,
      "totalCount": 1
    }
  }
}

 

 

위에 보면 homepage 주소가 HTML 태그로 감싸져 있습니다. 

실제 url 주소로 사용하기 위해 HTML 태그를 해제해보겠습니다. 

 

func extractURL(from htmlString: String) -> String? {
    // 정규식을 사용하여 HTML 태그 내 URL을 추출
    let pattern = #"href="([^"]+)""#
    
    do {
        let regex = try NSRegularExpression(pattern: pattern, options: [])
        if let match = regex.firstMatch(in: htmlString, options: [], range: NSRange(htmlString.startIndex..., in: htmlString)) {
            if let range = Range(match.range(at: 1), in: htmlString) {
                return String(htmlString[range])
            }
        }
    } catch {
        print("Regex error: \(error)")
    }
    return nil
}

// 예제 사용
let homepageHTML = "<a href=\"https://royal.khs.go.kr/ROYAL/contents/menuInfo-gbg.do?grpCode=gbg\" target=\"_blank\" title=\"새창 : 경복궁 홈페이지로 이동\">https://royal.khs.go.kr/</a>"

if let homepageURL = extractURL(from: homepageHTML) {
    print("Extracted URL: \(homepageURL)")
    // 이제 URL을 사용할 수 있습니다.
}

 

 

코드 설명:

  1. 정규식 사용:
    • 정규식 패턴 href="([^"]+)"를 사용하여 href 속성의 값을 추출합니다.
    • ([^"]+)는 " 사이에 있는 문자열(즉, URL)을 잡아냅니다.
  2. 매칭된 문자열 반환:
    • 정규식을 사용해 첫 번째 매칭 결과에서 URL만 추출하여 반환합니다.

이렇게 하면 HTML 태그에서 URL을 추출할 수 있습니다. 추출된 URL은 https://royal.khs.go.kr/ROYAL/contents/menuInfo-gbg.do?grpCode=gbg가 될 것입니다.