채택완료

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

인천 연수구 연수동 1111번지

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

울산 남구 달동 333번지

 

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

|

답변 3개 / 댓글 2개

채택된 답변
+20 포인트

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

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

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

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

 

Copy
<?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;
}

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

Copy
<?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." ";
}

?>

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

동이라는 글자를 찾아서

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

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

답변에 대한 댓글 2개

공백이랑 ( 가 전부더라구요.
어떤 함수를 써야될까요 ㅜ
가져온 결과에서 공백과 (도 빼주도록 한번더 필터링해주시면 되겠네요

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