> 백엔드 개발 > PHP 튜토리얼 > strtr 대 str_replace: 각 PHP 문자열 대체 함수를 언제 사용해야 합니까?

strtr 대 str_replace: 각 PHP 문자열 대체 함수를 언제 사용해야 합니까?

DDD
풀어 주다: 2024-11-04 22:07:02
원래의
395명이 탐색했습니다.

strtr vs str_replace: When should I use each PHP string replacement function?

strtr 대 str_replace: 다른 대체 함수를 사용해야 하는 경우

PHP에서는 strtr 및 str_replace 함수 모두 문자열 대체를 수행할 수 있습니다. 그러나 올바른 기능을 선택하는 것은 특정 요구 사항과 사용 사례에 따라 다릅니다.

교체 순서의 대조

어떤 경우에는 결과 출력이 동일하게 나타날 수 있지만 두 함수의 미묘한 차이점:

echo strtr('test string', 'st', 'XY'); // "YeXY XYring"
echo str_replace(array('s', 't'), array('X', 'Y'), 'test string'); // "YeXY XYring"
로그인 후 복사

strtr은 하위 문자열을 오른쪽에서 왼쪽으로 바꾸는 반면 str_replace는 왼쪽에서 오른쪽으로 바꿉니다. 이 차이점은 겹치는 하위 문자열을 교체할 때 더욱 분명해집니다.

echo strtr('1 2 3 3', '1 2 3', 'XYZ'); // "1 2 3 Z"
echo str_replace(array('1 2 3', '1 2'), array('XYZ', 'AB'), '1 2 3 3'); // "ABXYZ"
로그인 후 복사

배열 키 교체와 다중 하위 문자열 교체

또 다른 차이점은 대체 배열을 처리하는 방법에 있습니다.

$arr = array("1" => "A", "2" => "B", "3" => "C");
echo strtr('123', $arr); // "ABC"
echo str_replace(array_keys($arr), array_values($arr), '123'); // "ABC"
로그인 후 복사

이 경우 두 함수 모두 문자를 해당 배열 값으로 바꿉니다. 그러나 strtr에는 키-값 쌍이 있는 연관 배열이 필요한 반면 str_replace는 하위 문자열 및 교체의 간단한 배열에서 작동할 수 있습니다.

교체 우선 순위

strtr은 다음을 기반으로 교체의 우선 순위를 지정합니다. 대체되는 부분 문자열의 길이(내림차순)입니다. 반대로 str_replace는 교체 배열에 정의된 순서대로 교체를 처리합니다. 이는 다음 예에서 볼 수 있듯이 다른 결과로 이어질 수 있습니다.

$text = "PHP: Hypertext Preprocessor";
$text_strtr = strtr($text, array("PHP: Hypertext Preprocessor" => "PHP", "PHP" => "PHP: Hypertext Preprocessor"));
$text_str_replace = str_replace(array("PHP", "PHP: Hypertext Preprocessor"), array("PHP: Hypertext Preprocessor", "PHP"), $text);

var_dump($text_strtr); // string(3) "PHP"
var_dump($text_str_replace); // string(27) "PHP: Hypertext Preprocessor"
로그인 후 복사

결론적으로 strtr과 str_replace는 모두 PHP에서 문자열 교체에 대한 서로 다른 접근 방식을 제공합니다. 동작과 구문의 미묘한 차이를 이해하면 특정 사용 사례에 적합한 기능을 선택하는 데 도움이 됩니다.

위 내용은 strtr 대 str_replace: 각 PHP 문자열 대체 함수를 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿