채택완료

문자열을 뒤에서 자를수 있나요?

2023-12-01 (금) 13:18:40 2,251

제주특별자치도 제주시 애월읍 가문동길 2

위 주소를 wr_1 여분필드에 담았을때

가문동길 2

위에 처럼 뒤에 주소만 출력되게 할수 있나요??

|

답변 6개 / 댓글 4개

채택된 답변
+20 포인트
2023-12-01 (금) 18:18:22

@sinbi, @균이 님의 답변처럼 그런 부분들을 생각하지 못했네요.

다음과 같은 방법으로 해 볼 수 있지 않을까 합니다.

Copy
<?php

$address = "제주특별자치도 제주시 애월읍 가문로 11번길 1-1 101호";

// "시", "군", "구", "읍"을 포함한 부분을 찾고 그 이후의 부분을 출력
if (preg_match('/[^\s]+ [^\s]+ [^\s]+([^\s]+.*)/', $address, $matches)) {
    $result = trim($matches[1]);
    echo $result;
} else {
    echo "주소에서 원하는 부분을 찾을 수 없습니다.";
}

?>

답변에 대한 댓글 1개

알려주신 방법으로 처리하였습니다! 다만 앞에 � 인코딩 오류난 문자가 보이는데 이건 어떻게 해결 할 수 있을까요?
2023-12-03 (일) 06:40:30

주소 찾기 RESTAPI에 넣어서 결과값으로 처리하시는 건 어떤가요?

REST API | Kakao Developers 문서

response.documents[0].road_address.road_name 정도로 가져다 쓰시면 될 듯

뒤에 오는 주소가 일정하지않은데....

가문동길 ABC아파트 101동 101호 <--이런 경우는?

가문로 11번길 1-1 101호 등등

기본주소 패턴이 어떠냐에 따라 가능 여부 결정될 듯.

preg_match, substr, explode 등 함수 공부해 보세요.

2023-12-01 (금) 13:27:50

정규식을 사용해서 다음과 같이 해 볼 수 있을 것 같습니다.

Copy
<?php

$address = "제주특별자치도 제주시 애월읍 가문동길 2";

// 정규표현식을 사용하여 뒷부분만 추출
if (preg_match('/\w+\s(\d+)$/', $address, $matches)) {
    $result = $matches[1];
    echo $result;
} else {
    echo "주소 형식이 맞지 않습니다.";
}

?>

답변에 대한 댓글 3개

테스트 해보니, 결과값이 [주소 형식이 맞지 않습니다.]로 나와요.
[code]
<?php
$wr_1 = "제주특별자치도 제주시 애월읍 가문동길 2";

// 정규표현식을 사용하여 뒷부분만 추출
if (preg_match('/\s([^\s]+)$/', $wr_1, $matches)) {
$result = $matches[1];
echo $result;
} else {
echo "주소 형식이 맞지 않습니다.";
}
?>
[/code]
정규표현식을 수정하니까 작동은 잘 됩니다.
테스트해보니,이번엔 2만 찍힙니다.
2023-12-01 (금) 13:19:28

패턴이 동일 하다면 빈공간으로 배열로 만들고 나서 배열 갯수를 세고 뒤에 2개만 나오게 하시면 될거 같습니다.

답변을 작성하려면 로그인이 필요합니다.