정규 표현식은 특히 그룹 및 교체 캡처 작업을 할 때 위협적일 수 있습니다. '/e' 수정자를 사용하여 preg_replace()에서 대체 작업을 해독해 보겠습니다.
public static function camelize($word) { return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word); }
여기서 목표는 '^'(문자열의 시작) 또는 '_'( 밑줄).
'/e' modifier는 대체 문자열을 PHP 코드로 평가합니다. '2'는 '^' 또는 '_' 다음에 오는 소문자인 두 번째 캡처된 그룹을 나타냅니다. 그러나 이 수정자는 보안상의 이유로 더 이상 사용되지 않습니다.
preg_replace_callback()은 대체 문자열 대신 콜백 함수를 제공하여 더 안전한 대안을 제공합니다.
return preg_replace_callback('/(^|_)([a-z])/', function($matches) { return strtoupper($matches[2]); }, $word);
익명 함수는 일치 항목의 배열을 인수로 사용합니다. 여기서 $matches[1]은 '^' 또는 '_'을 나타내고 $matches[2]는 대문자로 표시되는 문자를 나타냅니다.
'/e'에 유의하세요. preg_replace_callback()을 사용할 때는 수정자를 제거해야 합니다. 위 패턴은 다음과 같이 단순화됩니다.
return preg_replace_callback('/(^|_)([a-z])/', function($matches) { return strtoupper($matches[2]); }, $word);
익명 함수는 'use' 키워드를 사용하여 명시적으로 가져온 변수에만 액세스할 수 있습니다.
위 내용은 PHP의 더 이상 사용되지 않는 `preg_replace()` `/e` 수정자를 `preg_replace_callback()`으로 안전하게 대체하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!