"문자열에서 자리 표시자 변수 바꾸기" 최적화
문자열에서 자리 표시자 변수를 식별하고 바꾸는 것이 중요한 다양한 시나리오에 직면할 수 있습니다. 이 코드 조각은 중괄호({})로 묶인 키-값 쌍을 찾아 그에 따라 업데이트하는 동적 대체 함수인 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!