채택완료

여분 필드 값의 일부만 출력하고 싶습니다

wr_1에 "홍_홍길동"이란 값을 다중셀렉터로 넣은후

리스트 및 읽기 화면에서

"홍" 또는 "홍길동"을 구분자"_" 앞이나 뒤쪽의 글을 출력하고 싶은데요

이럴떄 어떻게 처리해야하는지요?

답변 4개 / 댓글 4개

채택된 답변
+20 포인트
2020-04-06 (월) 12:04:38

참고로 더 추가합니다.

Copy
$view['wr_1'] = '홍_홍길동';
if ( strpos($view['wr_1'], '_')!==false ) { // _ 문자가 존재하면
    // 아래 둘 중 원하는 한 줄 사용
    list($wr_1) = explode('_', $view['wr_1'], 2); // _ 기준으로 2개로 분리한 앞쪽. 홍
    list(,$wr_1) = explode('_', $view['wr_1'], 2); // _ 기준으로 2개로 분리한 뒤쪽. 홍길동
} else { // _ 문자 없으면
    $wr_1 = $view['wr_1']; // 입력값 있으면 그대로 할당
}
$wr_1 = strlen($wr_1) ? $wr_1 : '미입력'; // 문자열 길이 있으면 값 그대로, 없으면 미입력 할당
echo $wr_1;

답변에 대한 댓글 4개

위와 같이 사용할때 한번은 문제가 없지만
읽기에서는 list($wr_1) = explode('_', $view['wr_1'], 2);
목록에서는 list(,$wr_1) = explode('_', $view['wr_1'], 2);
사용했더니 두개씩 나오는 문제가 있네요
두개씩 나오다뇨?

앞쪽과 뒤쪽을 구하는 방법을 모두 남긴 것이니 둘 중에서 원하는 쪽의 코드만 사용하면 됩니다.
두개가 나온다는게 아니구요
읽기화면에서 는 wr_1필드 값은 뒤에 값을
리스트에서는 wr_1필드값의 앞부분을 사용하려고하는데요
list($wr_1) = explode('_', $view['wr_1'], 2);를 한번만 사용해도 두개가 같이 출력되서 혹시나 싶어 문의드린겁니다
질문과 댓글의 차이. 이 댓글을 끝으로 EOA 처리.

1. 읽기 화면 view.skin.php 파일에서 뒤쪽 값 사용
2. 목록 화면 list.skin.php 파일에서 앞쪽 값 사용
2020-04-06 (월) 11:26:48
Copy
$wr_1 = '홍_홍길동';

$wr_1e = explode("_", $wr_1);

 

print_r($wr_1e); // Array ( [0] => 홍 [1] => 홍길동 )

echo $wr_1e[0]; // 홍

ehco $wr_1e[1]; // 홍길동

고정된 패턴( _ )이라면 

$strpld =explode('_' , 문자열);

$cnt = count($strpld);

for($i = 0 ; $i < $cnt ; $i++){

echo($strpld[$i] . "<br/>");

}

이런 형식도 사용할 수 있고

고정된 문자가 없는 문자열인 경우 , 

substr(문자열, 시작위치, 길이)

이렇게 하시면 될거같아요

2020-04-06 (월) 11:02:01

데이터를 뽑은 후 php에서 문자열 가공하시면 어떨까요

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