주소에서 동이름만 추출하고싶어요

주소에서 동이름만 추출하고싶어요

QA

주소에서 동이름만 추출하고싶어요

답변 3

본문

인천 연수구 연수동 1111번지

울산 남구 달삼로 111로  (삼산동)

울산 남구 달동 333번지

 

이런식 데이터가 있는데 xxx동 이름만 출력하는 방법없을까요?

이 질문에 댓글 쓰기 :

답변 3

특수문자를 스페이스로 변경

탭 개행 스페이스_여러개 등등을 스페이스 하나로 변경하고

맨마지막에 스페이스를 더미로 붙여준다음

동[스페이스] 를 preg_match 하면 ... 될까요?

 


<?php
$arr = array(
    '연수동 1111번지',
    '인천 연수구 연수동            1111번지',
    '울산 남구 달삼로 111로  (삼산동)',
    '울산 남구 달동 333번지',
    '울산 남구 달동달 333번지',
    '울산 남구 달동달 333번지(달동)',
    '울산 남구 달동',
    '울산 남구 달동333번지',
);
echo '<pre>';
$pattern = array('/[^A-Za-z0-9가-힣\s]/', '/[\t\n\r\s]+/');
$replacement = array(' ', ' ');
foreach ($arr as $str) {
    $str = preg_replace($pattern, $replacement, $str.PHP_EOL);
    preg_match_all('/[^\s]+동[\s]/', $str, $matches);
    print_r($matches);
    echo trim($matches[0][0]).PHP_EOL;
    echo PHP_EOL;
}

데이터가 일정한 규칙이 있는게 아니라 힘들지안을까싶네요

동이라는 글자를 찾아서

동 앞으로 띄어쓰기 전까지 가져오도록 해보세요

원하는결과가 나올지는 모르겠네요

다음 예제를 참조해 보세요.


<?php
$data = "인천 연수구 연수동 1111번지
울산 남구 달삼로 111로  (삼산동)
울산 남구 달동 333번지";
$pattern = "#\s+\(?([^\s]+동)\)?#i";
preg_match_all($pattern, $data, $ms);
//var_dump($ms[1]);
foreach ($ms[1] as $v) {
    echo $v." ";
}
?>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 13
© SIRSOFT
현재 페이지 제일 처음으로