반응형
Web Development · PHP 문자열 함수
PHP str_replace() — 문자열 안에서 찾아 바꾸는 함수
대소문자 구분 · 배열로 여러 교체 · str_ireplace와 비교 완전 정리
시작 오늘 분석할 코드
str_replace()는 문자열에서 특정 값을 찾아 다른 값으로 교체하는 함수입니다. 간단한 1대1 치환부터 배열을 이용한 다중 치환까지 지원하며, 웹 개발에서 가장 자주 쓰이는 문자열 처리 함수 중 하나입니다.
<?php $html = '<FONT size="3">Hello!</FONT><BR>'; $search = 'size="3"'; // 찾을 문자열 $replace = 'size="5"'; // 바꿀 문자열 $result = str_replace($search, $replace, $html); // size="3"을 찾아서 size="5"로 교체 // 결과: '<FONT size="5">Hello!</FONT><BR>' ?>
실제 출력 미리보기
<FONT size="3">Hello!</FONT>
→
<FONT size="5">Hello!</FONT>
size="3" → size="5" 교체 완료
용어 용어 정리
str_replace()str_replace($search, $replace, $subject) — 대상 문자열에서 검색어를 찾아 치환
$search찾을 문자열. 문자열 또는 배열 가능. 대소문자 구분함
$replace바꿀 문자열. 문자열 또는 배열 가능. 빈 문자열('')로 지정하면 삭제
$subject치환 대상 문자열. 배열을 넘기면 배열 각 요소에 치환 적용
str_ireplace()str_replace와 동일하지만 대소문자를 구분하지 않음 (case-insensitive)
다중 치환search, replace에 배열을 넘겨 여러 쌍을 한 번에 교체
전체 치환찾은 모든 위치를 교체. 첫 번째 것만 바꾸려면 str_replace_first 직접 구현 필요
반환값치환된 새 문자열 반환. 원본 $subject는 변경되지 않음
1 기본 동작 — 왜 인수가 3개인가?
찾을 것(search) + 바꿀 것(replace) + 대상(subject)
str_replace()는 세 가지를 알아야 동작합니다: ① 무엇을 찾을지(search) ② 무엇으로 바꿀지(replace) ③ 어디서 찾을지(subject). 반환값은 교체가 완료된 새 문자열입니다. 원본 $subject 자체는 바뀌지 않습니다.
$result = str_replace( "size=\"3\"", // ① 찾을 것: search "size=\"5\"", // ② 바꿀 것: replace $html // ③ 찾을 곳: subject ); // $html 자체는 그대로, $result에 교체 결과가 들어감
※ str_replace()는 모든 발생 위치를 교체합니다. "hello hello"에서 "hello"를 찾으면 두 곳 모두 교체됩니다. 첫 번째 것만 교체하는 내장 함수는 없습니다.
2 대소문자 구분 — str_replace vs str_ireplace
str_replace는 대소문자 구분 — 다르면 교체 안 됨
str_replace()는 기본적으로 대소문자를 구분합니다. "Hello"를 찾을 때 "hello"나 "HELLO"는 매칭되지 않습니다. 대소문자 구분 없이 찾으려면 str_ireplace()를 사용합니다.
str_replace — 대소문자 구분
$s = "Hello World";
str_replace("hello", "Hi", $s);
결과: "Hello World"
"hello"를 못 찾아 교체 안 됨
str_replace("hello", "Hi", $s);
결과: "Hello World"
"hello"를 못 찾아 교체 안 됨
str_ireplace — 대소문자 무시
$s = "Hello World";
str_ireplace("hello", "Hi", $s);
결과: "Hi World"
"Hello"도 매칭 → 교체됨
str_ireplace("hello", "Hi", $s);
결과: "Hi World"
"Hello"도 매칭 → 교체됨
3 배열로 여러 값 한 번에 치환
search와 replace 모두 배열로 넘기면 쌍으로 매칭
search와 replace에 배열을 넘기면 쌍으로 치환이 이루어집니다. search[0]→replace[0], search[1]→replace[1] 순으로 처리됩니다. 여러 단어를 한 번에 교체해야 할 때 매우 유용합니다.
$text = "PHP is old and slow"; // 여러 단어를 한 번에 치환 $result = str_replace( ["old", "slow"], // search 배열 ["modern", "fast"], // replace 배열 (쌍으로 매칭) $text ); echo $result; // "PHP is modern and fast" // replace를 하나로 지정하면 모든 search에 동일 교체 $result2 = str_replace(["old", "slow"], "good", $text); // "PHP is good and good"
반응형
4 삭제 패턴 — 빈 문자열로 치환
replace를 ''로 하면 찾은 문자를 제거하는 효과
replace 인수를 빈 문자열('')로 지정하면 found 문자열을 완전히 삭제하는 효과를 냅니다. 특정 HTML 태그를 제거하거나 불필요한 문자를 삭제할 때 활용됩니다.
// HTML 태그 직접 제거 (특정 태그만 제거할 때) $html = '안녕<br>하세요<br>'; $result = str_replace('<br>', '', $html); echo $result; // 안녕하세요 // 전화번호에서 하이픈 제거 $phone = '010-1234-5678'; $digits = str_replace('-', '', $phone); echo $digits; // 01012345678
5 치환 횟수 카운트 — 4번째 인수 $count
얼마나 교체됐는지 확인하는 방법
str_replace()의 4번째 인수로 변수를 참조로 넘기면 실제 치환이 몇 번 일어났는지 카운트가 저장됩니다. 교체가 실제로 발생했는지 검증할 때 유용합니다.
$text = "사과 귤 사과 포도 사과"; $result = str_replace("사과", "딸기", $text, $count); echo $result; // "딸기 귤 딸기 포도 딸기" echo $count; // 3 (사과가 3번 교체됨)
6 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
| 대소문자 차이로 교체 안 됨 | str_replace("Size", ...) — "size"는 매칭 안 됨 | 대소문자 무관하면 str_ireplace() 사용 |
| 반환값을 변수에 안 받음 | 원본이 바뀐 줄 알고 $subject 사용 — 교체 안 된 값 참조 | $result = str_replace() 형태로 저장 |
| 배열 쌍이 어긋남 | search[0]이 replace[1]로 교체되는 혼선 | search와 replace 배열 순서 맞추기 |
| 연쇄 치환 시 의도치 않은 교체 | A→B, B→C 순으로 치환하면 A가 최종적으로 C가 됨 | str_replace는 배열 순서대로 차례로 교체 → 중복 교체 위험 인지 |
| 정규식이 필요한데 str_replace 사용 | 패턴 매칭이 안 되거나 복잡한 치환 불가 | 패턴 치환은 preg_replace() 사용 |
핵심 한 줄 요약
기본 사용법str_replace($search, $replace, $subject) — 찾아서 모두 교체
대소문자 무시str_ireplace() — i가 case-insensitive
배열 치환search, replace 모두 배열로 넘기면 쌍으로 다중 교체
삭제 패턴replace에 '' 지정 → 찾은 문자 제거
반환값새 문자열 반환, 원본은 변경 안 됨
Tags
#PHP #str_replace #문자열치환 #문자열교체 #str_ireplace #대소문자구분 #배열치환 #PHP문자열함수 #PHP함수 #PHP학습 #웹개발 #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, str_replace, 문자열치환, 문자열교체, str_ireplace, 대소문자구분, 배열치환, PHP문자열함수, PHP함수, PHP학습, 웹개발, 티스토리
반응형
'php' 카테고리의 다른 글
| PHP trim() — 양끝 공백 제거 · ltrim · rtrim · 커스텀 문자 완전 정리 (0) | 2026.07.10 |
|---|---|
| PHP substr() — 문자열 일부 추출 · 음수 인덱스 · mb_substr 차이 완전 정리 (0) | 2026.07.10 |
| PHP strip_tags() — HTML 태그 제거 · 허용 태그 지정 · XSS 방어 완전 정리 (0) | 2026.07.10 |
| PHP mb_strlen() — 한글 글자 수 정확히 세기 · strlen과 차이 완전 정리 (0) | 2026.07.10 |
| PHP list() — 배열 분해 할당 · 구조 분해 단축 문법 완전 정리 (1) | 2026.07.10 |
왕진 블로그

댓글