2013-06-13 1 views
0

어떻게 역 참조와 함께 str_pad를 사용합니까? 내가 사용하는 방식으로, 작은 따옴표 사이의 문자를 역 참조 된 문자열이 아닌 문자로 읽습니다. 작은 따옴표를 이스케이프하면 오류가 반환됩니다.PHP : str_pad 및 역 참조

$y = 'CHG1234567'; 
$y = preg_replace ('~(((?:CHG|HD|TSK))([1-9][0-9]++))~', '${2}'.(str_pad('$3',10, 0, STR_PAD_LEFT)), $y); 
echo $y; 
# returns - CHG0000000- 15 digits 
# i want - CHG00- 10 digits 

솔루션 :

$y = preg_replace_callback ('~((?:CHG|HD|TSK))([1-9][0-9]++)~', function($m) { return $m[1] . str_pad($m[2], 10, '0', STR_PAD_LEFT); 
}, $y); 

답변

1

사용 preg_replace_callback 대신 preg_replace :

$y = preg_replace_callback('~(CHG|HD|TSK)([1-9][0-9]++)~', function ($m) { 
    return $m[1] . str_pad($m[2], 10, '0', STR_PAD_LEFT); 
}, $y); 
+0

감사합니다. 질문에 해결책을 게시했습니다. – user2001487