> 백엔드 개발 > PHP 튜토리얼 > 문자열에서 자리 표시자 변수를 효율적으로 대체하려면 어떻게 해야 합니까?

문자열에서 자리 표시자 변수를 효율적으로 대체하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-11-23 07:05:10
원래의
307명이 탐색했습니다.

How Can I Efficiently Replace Placeholder Variables in a String?

"문자열에서 자리 표시자 변수 바꾸기" 최적화

문자열에서 자리 표시자 변수를 식별하고 바꾸는 것이 중요한 다양한 시나리오에 직면할 수 있습니다. 이 코드 조각은 중괄호({})로 묶인 키-값 쌍을 찾아 그에 따라 업데이트하는 동적 대체 함수인 dynStr을 보여줍니다.

function dynStr($str,$vars) {
    preg_match_all("/\{[A-Z0-9_]+\}+/", $str, $matches);
    foreach($matches as $match_group) {
        foreach($match_group as $match) {
            $match = str_replace("}", "", $match);
            $match = str_replace("{", "", $match);
            $match = strtolower($match);
            $allowed = array_keys($vars);
            $match_up = strtoupper($match);
            $str = (in_array($match, $allowed)) ? str_replace("{".$match_up."}", $vars[$match], $str) : str_replace("{".$match_up."}", '', $str);
        }
    }
    return $str;
}

$variables = array("first_name" => "John","last_name" => "Smith","status" => "won");
$string = 'Dear {FIRST_NAME} {LAST_NAME}, we wanted to tell you that you {STATUS} the competition.';
echo dynStr($string,$variables); // Would output: 'Dear John Smith, we wanted to tell you that you won the competition.'
로그인 후 복사

그러나 저자가 강조한 것처럼 이 구현은 중복 문제로 인해 어려움을 겪습니다. 배열 액세스가 필요하며 계산 집약적인 것으로 보입니다. 정규식 사용을 제거하고 "vars" 배열의 키-값 쌍을 기반으로 간단한 문자열 대체를 구현하여 이 프로세스를 간소화할 수 있습니다.

$variables = array("first_name" => "John","last_name" => "Smith","status" => "won");
$string = 'Dear {FIRST_NAME} {LAST_NAME}, we wanted to tell you that you {STATUS} the competition.';

foreach($variables as $key => $value){
    $string = str_replace('{'.strtoupper($key).'}', $value, $string);
}

echo $string; // Dear John Smith, we wanted to tell you that you won the competition.
로그인 후 복사

이 접근 방식은 불필요한 중첩 배열 순회를 제거하고 교체 프로세스를 간소화하여 더욱 깔끔하고 효율적인 코드를 생성합니다.

위 내용은 문자열에서 자리 표시자 변수를 효율적으로 대체하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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