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

문자열에서 중간 글자만 다른 걸로 바꾸기 채택완료

울라프 3년 전 조회 3,002

$origin = "1234567";

 

이렇게 있다고 하면 4만 8로 바꿀려면 어떻게 해야 하나요?

substr 써서 앞뒤 잘랐다 붙이는 수밖에 없나요?

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

답변 3개

채택된 답변
+20 포인트
B
3년 전

"문자열에서 중간 문자만"이라 했으면서

예로 고정된 문자열 값을 제시하니

지정 문자 치환밖에 나올 수 없죠.

* 만약 '4234564' 문자열에서 4를 8로 변경한다면, 8238568이 되겠죠?

 

어쨌거나 문자열에서 중간 글자만 변경하려면

먼저 문자열의 길이를 구하고,

홀수 길이는 가운데가 명확하니 상관이 없으나

짝수 길이일 때는 어떤 문자를 치환해줄지 규칙을 정해야 합니다.

</p>

<p><?php</p>

<p>$origin = '123456'; // 예를 들어 짝수 길이일 때</p>

<p>$len = strlen($origin); // 길이 = 6

$mid = floor($len/2); // 2로 나누고, 소수점 버림. 길이가 7일때 3, 길이가 6일때 3</p>

<p>if ( $len%2 ) { // 홀수 길이

    $result = substr_replace($origin, '*', $mid, 1); // 1234567 -> 123*567

} else { // 짝수 길이

    $result = substr_replace($origin, '*', $mid-1, 1); // 가운데 앞 123456 -> 12*456

    $result = substr_replace($origin, '*', $mid, 1); // 가운데 뒤 -> 123*56

    $result = substr_replace($origin, '**', $mid-1, 2); // 가운데 두 글자 -> 12**56 / * 하나 지정, 12*56

}</p>

<p>

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

답변에 대한 댓글 2개

울라프
3년 전
제가 원하는 답변은 아니였으나 도움이 많이 되어 채택하였습니다.
제가 질문을 모호하게 한것 같습니다.
울라프
3년 전
substr_replace 써서 잘 해결되었습니다.
감사합니다.

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

n
3년 전

추가 피해자 방지 https://sir.kr/conflictconsultation/245" rel="nofollow noreferrer noopener" target="_blank">https://sir.kr/conflictconsultation/245

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

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

유찬아빠
로그인 후 평가할 수 있습니다

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

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

로그인