$origin = "1234567";
이렇게 있다고 하면 4만 8로 바꿀려면 어떻게 해야 하나요?
substr 써서 앞뒤 잘랐다 붙이는 수밖에 없나요?
|
답변 3개 / 댓글 2개
채택된 답변
+20 포인트
2021-12-23 (목) 11:26:35
"문자열에서 중간 문자만"이라 했으면서
예로 고정된 문자열 값을 제시하니
지정 문자 치환밖에 나올 수 없죠.
* 만약 '4234564' 문자열에서 4를 8로 변경한다면, 8238568이 되겠죠?
어쨌거나 문자열에서 중간 글자만 변경하려면
먼저 문자열의 길이를 구하고,
홀수 길이는 가운데가 명확하니 상관이 없으나
짝수 길이일 때는 어떤 문자를 치환해줄지 규칙을 정해야 합니다.
Copy
<?php
$origin = '123456'; // 예를 들어 짝수 길이일 때
$len = strlen($origin); // 길이 = 6
$mid = floor($len/2); // 2로 나누고, 소수점 버림. 길이가 7일때 3, 길이가 6일때 3
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
}
답변에 대한 댓글 2개
2021-12-23 (목) 18:42:51
nabiwa
2021-12-23 (목) 14:06:00
추가 피해자 방지 https://sir.kr/conflictconsultation/245
2021-12-23 (목) 08:16:42
str_replace("4","8",$origin);
답변을 작성하려면 로그인이 필요합니다.
제가 질문을 모호하게 한것 같습니다.