2014-06-13 2 views
1

맞춤 이메일 템플릿을 만들었습니다. 그리고 {#paid_amount} 등으로 몇 가지 변수를 할당했습니다.

모든 변수가 대체되지만 paid_amount은 예상대로 아닙니다. 나는 이런 식으로 뭔가를 교체 한 :

// Text file with HTML markups 
$template = file_get_contents($template_url); 

$paid_amount = '$1.00'; 
$pattern = array( 
       '/\{\#user_name\}/i', 
       '/\{\#paid_amount\}/i', 
       '/\{\#duration\}/i' ); 
$replacement = array( 
       $user_name, 
       $paid_amount, 
       $duration); 

$new_template = preg_replace($pattern, $replacement, $template); 

그 이메일의 양 .00를 인쇄하고 난 금액에서 기호 $를 제거하면 그것은 1.00를 인쇄 할 수 있습니다. Gmail에서 테스트 해 보았습니다. 누구도 전에 이것을 직면 했습니까?

심지어 나는 $으로 시도했지만 작동하지 않습니다. 아무도 내가 놓친 이유 또는 왜 작동하지 않는지 말해 줄 수 있습니까?

답변

7

당신은 달러 기호를 탈출해야합니다

$paid_amount = '\$1.00'; 

preg_replace()이 캡처 그룹의 내용을 해결하기 위해 매개 변수를 교체 $을 사용하고 있기 때문입니다.

예 : 위 예에서

$string = ">> hello <<"; 
$pattern = "/>> ([^ ]*) <</"; 

echo preg_replace($pattern, '$1', $string); 

, $1 주소 제 캡처 그룹의 내용 : ([^ ]*) -> "안녕하세요".

+0

예를 들어 설명해 주셔서 감사합니다. 그 지금 일하고있어. –

+1

(내) 단어로 설명하기가 어렵지만 예를 들어 설명하기가 어렵습니다. :) – hek2mgl

+0

네, 맞습니다 :) ** Thorsten ** –