주소에서 동이름만 추출하고싶어요
본문
인천 연수구 연수동 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." ";
}
?>
답변을 작성하시기 전에 로그인 해주세요.