2016-11-06 5 views
5

JavaScript로 .replace을 사용하는 것과 비슷하게 동적으로 함수를 대체 할 수 있습니까?PHP의 함수로 동적 대체하기

"1 2 3" => "2 4 6" (x2) 

현재 preg_replace 함수는 인수를위한 기능을 지원하지 않는 것 : 대등 한 사용 사례 I 숫자와 문자열을 가지고 있고이 기능을 통해 번호를 전달하고자하는 것입니다. 참고로

는 자바 스크립트에 다음과 같이 구현할 수 있습니다

var str = "1 2 3"; 
str.replace(/\d+/g, function(num){ 
    return +num * 2; 
}); 
+0

에서

$newStr = preg_replace_callback("/\d+/", function($matches){ return $matches[0] * 2; }, $str); 

확인 결과'preg_replace_callback' –

답변

2

당신은 정규식 일치를위한 콜백이 preg_replace_callback()를 사용해야합니다. 콜백 함수에서 일치하는 숫자를 곱할 수 있습니다. demo

+0

뿐만 아니라 인덱스를 얻을 수있는 방법이 있나요? –

+0

@Derek 朕 會 功夫 함수 반환은'$ matches' 배열의 일부와 일치하며'print_r ($ matches)'를 사용하여 그것의 모든 색인을 볼 수 있습니다 – Mohammad

+0

@Derek 朕 會 功夫 예, 코드에 두 가지 문제가 있습니다. 먼저, 함수의 regex 매개 변수를'//'사이에 설정해야합니다. 둘째,'return' 전에 함수의 실행을 중단하기 때문에'$ i'의 값을 증가시켜야합니다. https://3v4l.org/2bYAh – Mohammad