PHP 도로명주소와 지번주소 중 하나만 있을 때 처리하는 방법
주소 데이터는 도로명주소(address_road)와
지번주소(address_parcel) 컬럼을 함께 사용하는 경우가 많습니다.
하지만 실제 데이터에서는 도로명주소만 존재하거나, 반대로 지번주소만 존재하는 경우도 적지 않습니다.
이런 상황에서 지도 검색 링크를 생성할 때 특정 컬럼만 사용하면 주소가 없는 데이터에서는 링크가 정상적으로 동작하지 않을 수 있습니다.
따라서 도로명주소를 우선 사용하고, 값이 없는 경우에는 지번주소를 자동으로 사용하도록 처리하는 것이 좋습니다.
주소 자동 선택하기
아래 코드는 도로명주소가 존재하면 해당 값을 사용하고, 도로명주소가 비어 있으면 지번주소를 대신 사용하는 예제입니다.
<?php
$address = $row['address_road'] ?: $row['address_parcel'];
?>
PHP의 축약 삼항 연산자(?:)를 사용하면 간단하게 처리할 수 있습니다.
- address_road 값이 있으면 사용
- address_road 값이 없으면 address_parcel 사용
네이버 지도와 카카오 지도 링크 생성 예제
선택된 주소를 이용해 네이버 지도와 카카오 지도 검색 링크를 생성할 수 있습니다.
<?php
$address = $row['address_road'] ?: $row['address_parcel'];
?>
<div class="mt-1 flex gap-2">
<a href="https://map.naver.com/p/search/<?php echo urlencode($address); ?>"
target="_blank"
rel="nofollow noopener noreferrer"
class="text-[9px] text-[#03c75a] font-bold hover:underline">
네이버 지도
</a>
<a href="https://map.kakao.com/?q=<?php echo urlencode($address); ?>"
target="_blank"
rel="nofollow noopener noreferrer"
class="text-[9px] text-[#f5a623] font-bold hover:underline">
카카오 지도
</a>
</div>
정리
공공데이터나 외부 API를 사용하는 경우 주소 형식이 통일되어 있지 않은 경우가 많습니다.
따라서 지도 검색 기능을 구현할 때는 도로명주소만 사용하는 것보다 도로명주소를 우선 적용하고, 값이 없을 경우 지번주소를 사용하는 방식이 훨씬 안정적입니다.
간단한 조건 처리만 추가해도 네이버 지도와 카카오 지도 링크가 정상적으로 동작하며, 사용자 입장에서도 주소 검색 실패를 줄일 수 있습니다.