과제:
/e와 같은 정규 표현식 수정자는 PHP에서 더 이상 사용되지 않습니다. . 이는 다음 코드에서 /e 수정자를 대체 preg_replace_callback으로 바꾸려고 시도할 때 문제가 됩니다.
public static function camelize($word) { return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word); }
역참조 이해:
/e 수정자는 백슬래시를 숫자(1)로 대체하여 일치하는 문자열의 캡처된 부분을 나타냅니다. 예를 들어, 주어진 표현식 (^|_)([a-z])에서 첫 번째 캡처는 (^|_)이고 두 번째 캡처는 ([a-z])입니다.
preg_replace_callback 대안:
preg_replace_callback은 캡처된 하위 패턴의 배열을 인수로 받는 콜백 함수를 사용합니다. 첫 번째 하위 패턴은 인덱스 0에 있고 두 번째 하위 패턴은 인덱스 1에 있는 식입니다.
코드에 적용:
/e 수정자를 바꾸려면 다음이 필요합니다. 대체 문자열을 익명 함수로 변환하려면:
function($m) { return strtoupper($m[2]); }
이 함수는 일치 배열 $m을 사용하고 캡처된 두 번째 문자열을 반환합니다. 하위 패턴을 대문자로 변환합니다.
모두 결합:
최종 코드는 다음과 같습니다.
public static function camelize($word) { return preg_replace_callback('/(^|_)([a-z])/', function($m) { return strtoupper($m[2]); }, $word); }
추가 고려 사항:
위 내용은 `preg_replace`에 있는 PHP의 더 이상 사용되지 않는 `/e` 수정자를 `preg_replace_callback`으로 안전하게 대체하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!