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에서 문자열 교체에 대한 서로 다른 접근 방식을 제공합니다. 동작과 구문의 미묘한 차이를 이해하면 특정 사용 사례에 적합한 기능을 선택하는 데 도움이 됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3