> 백엔드 개발 > PHP 튜토리얼 > `preg_replace`에 있는 PHP의 더 이상 사용되지 않는 `/e` 수정자를 `preg_replace_callback`으로 안전하게 대체하려면 어떻게 해야 합니까?

`preg_replace`에 있는 PHP의 더 이상 사용되지 않는 `/e` 수정자를 `preg_replace_callback`으로 안전하게 대체하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-12-27 12:35:11
원래의
633명이 탐색했습니다.

How Can I Safely Replace PHP's Deprecated `/e` Modifier in `preg_replace` with `preg_replace_callback`?

preg_replace_callback으로 수정자 이스케이프

과제:

/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);
}
로그인 후 복사

추가 고려 사항:

  • /e 수정자를 제거하세요. 정규식 패턴에서.
  • 더 읽기 쉬운 콜백 인수를 위해 명명된 캡처 그룹((?Ppattern)) 사용을 고려하세요.
  • 변수 범위에 유의하고 use 키워드를 사용하세요. 콜백의 외부 변수에 액세스합니다.

위 내용은 `preg_replace`에 있는 PHP의 더 이상 사용되지 않는 `/e` 수정자를 `preg_replace_callback`으로 안전하게 대체하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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