📖
strtr 와 str_replace 함수 차이

페이지 정보

본문

strtr()과 str_replace()는 둘 다 PHP에서 문자열 치환에 사용되는 함수이지만, 동작 방식에 차이가 있습니다.
아래에 그 차이와 함께 여러 개 치환하는 예제를 설명해 드리겠습니다.

✅ 차이점 요약

항목 → str_replace() → strtr()
치환 방식  → 찾을 문자열 전체가 일치하면 치환 → 문자 단위 또는 키 문자열 매핑으로 치환
치환 우선순위 → 왼쪽부터 순차적으로 처리 → 길이 우선 (길이가 긴 키를 먼저 대입)
치환 대상 → 문자열 또는 배열 가능 → 배열 또는 문자열 치환 맵
중복/겹침 처리 → 순차 치환 (앞에서 바뀐 것이 뒤에서 영향 가능) → 동시에 모두 대체 (덮어쓰기 안 됨)

✅ 예제: 여러 개를 치환하는 경우
📌 str_replace() 예제[code]$text = "Hello world, I love PHP and JavaScript.";

$from = ["Hello", "PHP", "JavaScript"];
$to  = ["Hi", "Python", "TypeScript"];

$result = str_replace($from, $to, $text);
echo $result;
// 결과: Hi world, I love Python and TypeScript.[/code]
📌 strtr() 예제 1 (배열 매핑 방식)[code]$text = "Hello world, I love PHP and JavaScript.";

$replaceMap = [
    "Hello" => "Hi",
    "PHP" => "Python",
    "JavaScript" => "TypeScript"
];

$result = strtr($text, $replaceMap);
echo $result;
// 결과: Hi world, I love Python and TypeScript.[/code]
📌 strtr() 예제 2 (문자 단위 치환)[code]$text = "ABCDEF";

// 문자 하나씩 매핑
$result = strtr($text, "ABC", "123");
echo $result;
// 결과: 123DEF[/code]strtr("ABCDEF", "ABC", "123") 는 A→1, B→2, C→3 으로 문자 단위로 치환함.

✅ 차이점 주의 예시[code]$text = "abc";

echo str_replace(["a", "ab"], ["x", "y"], $text);
// 결과: **xc** (먼저 a→x, 그다음 ab는 더 이상 없으므로 무시됨)

echo strtr($text, ["a" => "x", "ab" => "y"]);
// 결과: **y** (ab가 먼저 매칭됨 → 길이 우선 적용)[/code]strtr()는 긴 키 "ab"을 먼저 치환해서 abc → yc 가 되고, 그 뒤엔 더 이상 치환할 게 없음.

✅ 요약 정리
문자열 일부를 배열로 바꿀 때 → str_replace()
문자 하나하나 교체할 때 → strtr($str, "abc", "123")
고정된 키/값 쌍을 빠르게 치환 → strtr($str, ['key'=>'value'])

✅ 어떤 경우에 어떤 함수를 쓰나요?
단어 또는 문자열 여러 개를 다른 문자열로 바꾸고 싶을 때 → str_replace() → 순차적 치환, 직관적 사용
고정된 키-값 쌍으로 정확히 매핑하여 치환하고 싶을 때 → strtr(배열) → 빠르고 충돌 없음
문자열을 문자 단위로 교체하고 싶을 때 → strtr(문자열, "ABC", "123") → 한 글자씩 빠르게 치환

🧪 실습용 PHP 코드: str_replace() vs strtr()[code]<?php
$text = "Hello ABC, I love PHP and JavaScript. abc";

// str_replace 실습
$str_replace_result = str_replace(
    ["Hello", "PHP", "JavaScript", "abc"],
    ["Hi", "Python", "TypeScript", "xyz"],
    $text
);

// strtr (배열 치환 방식) 실습
$strtr_array_result = strtr($text, [
    "Hello" => "Hi",
    "PHP" => "Python",
    "JavaScript" => "TypeScript",
    "abc" => "xyz"
]);

// strtr (문자 단위 치환 방식) 실습
$strtr_char_result = strtr($text, "HPA", "hpa"); // H→h, P→p, A→a

echo "<h2>원본 문자열:</h2><pre>$text</pre>";

echo "<h2>str_replace 결과:</h2><pre>$str_replace_result</pre>";

echo "<h2>strtr (배열 치환) 결과:</h2><pre>$strtr_array_result</pre>";

echo "<h2>strtr (문자 단위 치환) 결과:</h2><pre>$strtr_char_result</pre>";
?>[/code]
🧪 실행하면 이런 결과가 나옵니다:[code]원본 문자열:
Hello ABC, I love PHP and JavaScript. abc

str_replace 결과:
Hi ABC, I love Python and TypeScript. xyz

strtr (배열 치환) 결과:
Hi ABC, I love Python and TypeScript. xyz

strtr (문자 단위 치환) 결과:
hello aBC, I love pHp and JavaScript. abc[/code]
✅ 포인트 정리
str_replace()와 strtr(array)는 거의 같은 결과를 주지만,
strtr()는 겹치는 키가 있을 때 길이가 긴 키를 먼저 치환합니다.
strtr("ABC", "ABC", "123")는 문자 단위 치환입니다. 단어 전체가 아닌 문자 하나하나 바뀌죠.

댓글목록

등록된 댓글이 없습니다.


자료 목록
번호 제목 날짜
199
🫧
05-23
198
🫧
05-23
197
🫧
05-23
196
🫧
05-23
195
🫧
05-22
194
🫧
05-22
193
🫧
05-22
192
🫧
05-22
191
🫧
05-21
190
🫧
05-16
📖
🫧
05-15
188
🫧
05-14
187
🫧
05-11
186
🫧
05-10
185
🫧
05-10

🔍 검색

회사소개 개인정보처리방침 서비스이용약관
Copyright © rainbowgarden.shop All rights reserved.