국토교통부(TAGO) 지하철정보에서 지하철역ID 패턴으로 노선명 추출하기
·
조회수 34
셀렉트박스로 노선을 선택하면 선택한 노선에 해당하는 역명이 출력되야 하는데 한가지 문제가 생겼습니다.
원본데이터에서는 부산지하철1호선, 대구지하철1호선, 수도권지하철 1호선, 대전지하철1호선, 광주지하철1호선도 노선명(subwayRouteName)은 1호선으로 나오기 때문에
원본데이터의 노선명(subwayRouteName)으로는 원하는 방식으로 역명을 구분할 수가 없더라구요.
그래서 생각해낸게 지하철역ID에 해당하는 subwayStationId값의 문자열 패턴으로 구분을하는 방법이었습니다.
예를 들어 공항선에 해당하는 지하철역ID MTRARA1A01와 MTRARA1A11를 보면 3번째부터 5번째까지의 문자열 즉 ARA가 공통적으로 들어가있는 패턴임을 알수 있었고
나머지 노선에 해당하는 지하철역ID도 마찬가지였지만 특정 노선의 경우 3번째부터 6번째까지의 공통 패턴을 가지고 있었습니다.
이걸 정리한게 아래 배열로
$arr1은 3번째부터 5번째까지의 문자열이 일치하는 패턴의 노선이고 $arr2는 3번째부터 6번째까지의 문자열이 일치하는 패턴의 노선입니다.
$arr1 = [
"ARA"=>"공항선","BGB"=>"부산김해경전철","BS1"=>"부산지하철1호선","BS2"=>"부산지하철2호선",
"BS3"=>"부산지하철3호선","BS4"=>"부산지하철4호선","DG1"=>"대구지하철1호선","DG2"=>"대구지하철2호선",
"DG3"=>"대구지하철3호선","DJ1"=>"대전지하철1호선","DXD"=>"신분당선","EVE"=>"에버라인",
"GJ1"=>"광주지하철1호선","GMG"=>"김포골드라인","SRA"=>"GTX-A","GXA"=>"GTX-A",
"IAM"=>"자기부상","IC7"=>"서울지하철7호선",
"KR1"=>"수도권전철1호선","KR3"=>"수도권전철3호선","KR4"=>"수도권전철4호선","NU4"=>"수도권전철4호선",
"S11"=>"수도권전철1호선","S12"=>"수도권전철2호선","S13"=>"수도권전철3호선","S14"=>"수도권전철4호선",
"S15"=>"수도권전철5호선","S16"=>"수도권전철6호선","S17"=>"수도권전철7호선","S18"=>"수도권전철8호선",
"S99"=>"수도권전철9호선","SLL"=>"신림선","SWW"=>"서해선","UIU"=>"우이신설","ULU"=>"의정부선"
];
$arr2 = [
"KRK1"=>"수인분당선","KRK2"=>"경춘선","KRK4"=>"경의중앙선",
"KRK5"=>"경강선","KRK6"=>"동해선","KRK7"=>"대경선","ICI1"=>"인천지하철1호선","ICI2"=>"인천지하철2호선"
];
이걸 이용하려면
$key = substr($subwayStationId, 3, 3);//3개 일치 패턴
$subwayStationId가 'MTRARA1A01'이면 $key는 'ARA'를 반환하고 키가 'ARA'에 해당하는 값은 '공항선'이 됩니다.
$key = substr($subwayStationId, 3, 4);//4개 일치 패턴
$subwayStationId 'MTRICI1123'이면 $key는 'ICI1'를 반환하고 키가 'ICI1'에 해당하는 값은 '인천지하철1호선'이 됩니다.