📖
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")는 문자 단위 치환입니다. 단어 전체가 아닌 문자 하나하나 바뀌죠.
아래에 그 차이와 함께 여러 개 치환하는 예제를 설명해 드리겠습니다.
✅ 차이점 요약
항목 → 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")는 문자 단위 치환입니다. 단어 전체가 아닌 문자 하나하나 바뀌죠.
댓글목록
등록된 댓글이 없습니다.
![]() ![]() |