테스트 사이트 - 개발 중인 베타 버전입니다

주소에서 동이름만 추출하고싶어요 채택완료

lur 4년 전 조회 2,332

인천 연수구 연수동 1111번지

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

울산 남구 달동 333번지

 

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

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

답변 3개

채택된 답변
+20 포인트
Big1
4년 전

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

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

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

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

 

</p>

<p><?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;

}</p>

<p>

로그인 후 평가할 수 있습니다

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

4년 전

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

</p>

<p><?php</p>

<p>$data = "인천 연수구 연수동 1111번지</p>

<p>울산 남구 달삼로 111로  (삼산동)</p>

<p>울산 남구 달동 333번지";</p>

<p>$pattern = "#\s+\(?([^\s]+동)\)?#i";</p>

<p>preg_match_all($pattern, $data, $ms);</p>

<p>//var_dump($ms[1]);</p>

<p>foreach ($ms[1] as $v) {

    echo $v." ";

}</p>

<p>?></p>

<p>

로그인 후 평가할 수 있습니다

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

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

동이라는 글자를 찾아서

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

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

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

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

로그인