본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP str_replace() — 문자열 찾아 바꾸기 · 배열 치환 · 대소문자 완전 정리

by 왕진 2026. 7. 10.
반응형

 

 

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_ireplace — 대소문자 무시
$s = "Hello World";
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학습, 웹개발, 티스토리
반응형

댓글