preg_replace_callback_array
정규 표현식 검색을 수행하고 콜백 교체를 사용하십시오
preg_replace_callback_array()
함수는 문자열 또는 문자열 배열을 반환합니다. 여기서 정규 표현식 일치 세트는 콜백 함수의 리턴 값으로 대체됩니다.
참고 : 각 문자열에 대해 함수는 주어진 순서의 패턴을 평가합니다. 문자열에서 첫 번째 패턴을 평가 한 결과는 두 번째 패턴의 입력 문자열로 사용됩니다. 이것은 예기치 않은 행동으로 이어질 수 있습니다.
문장의 각 단어가 포함 된 문자 또는 숫자 수를 보여줍니다.
<? php 함수 카운트 레터 ( $ matches ) { 반환 $ 일치 [ 0 ] . '[' . strlen ( $ 일치 [ 0 ] ) . '편지]' ; } 함수 countDigits ( $ matches ) { 반환 $ 일치 [ 0 ] . '[' . strlen ( $ 일치 [ 0 ] ) . '숫자]' ; } $ input = "1 년에 365 일이 있습니다." ; $ 패턴 = [ '/\ b [az]+\ b/i' => '카운트 레터' , '/\ b [0-9]+\ b/' => 'CountDigits' ] ; $ result = preg_replace_callback_array ( $ patterns , $ input ) ; echo $ 결과 ; ?>
직접 시도하십시오
이 예는 패턴이 순차적 평가에서 가질 수있는 잠재적 인 예기치 않은 효과를 보여줍니다. 먼저, 카운트 레터 교체가 "일"이후 "[4letter]"를 추가합니다. 교체를 실행 한 후 CountDigits 교체는 "4LETTER"에서 "4"를 찾아 "[1Digit]"에 추가합니다.
<? php 함수 카운트 레터 ( $ matches ) { 반환 $ 일치 [ 0 ] . '[' . strlen ( $ 일치 [ 0 ] ) . '편지]' ; } 함수 countDigits ( $ matches ) { 반환 $ 일치 [ 0 ] . '[' . strlen ( $ 일치 [ 0 ] ) . '숫자]' ; } $ input = "365 일" ; $ 패턴 = [ '/[az]+/i' => 'Countletters' , '/[0-9]+/' => 'CountDigits' ] ; $ result = preg_replace_callback_array ( $ patterns , $ input ) ; echo $ 결과 ; ?>
직접 시도하십시오