나는 HTML 전자 메일로 보내기 전에 데이터베이스에 저장된 컨텐트를 가져 와서 템플릿에로드하는 메일 클래스를 작성하고 있습니다. 그러나 각 전자 메일에는 PHP 변수와 동적 컨텐트가 포함되어 있으므로 구분 기호를 사용하기로 결정했습니다. 그래서 내용처럼 보이는 대신 :구분 기호를 PHP 변수로 바꾸기
function load($name,$content)
{
// preps the template for HTML
}
function content($template_id)
{
$template = $this->db->get_where('email_templates',array('id'=>$template_id));
return $template->content;
}
function new_email($email,$name,$user_type)
{
$msg = $this->load($name,$this->content(1));
$this->send($email,'Thanks for your application',$msg,1);
}
나는 데의 문제점 : 지금까지
Hello {{username}}, welcome to the site.
나는이 방법을 사용하고 있습니다 :
Hello $username, welcome to the site.
그것은처럼 보일거야 {{variable}}을 $ 변수로 변환하여 구문 분석하는 방법입니다. 전자 메일 템플리트에서 $ username으로로드하는 것을 원하지 않습니다. 정규 표현식을 사용하고 문자열을 이스케이프 처리하여 파싱 할 수 있습니까? 다음과 같음 :
$content = str_replace("{{","'.$",$template->content);
$content = str_replace("}}",".'",$template->content);
또는이 결함이 있습니까? 아무도 최선의 일이 무엇인지 압니까?
정규 표현식을 사용하십시오. 나중에 어떤 종류의 논리 (루프 또는 조건이있는 경우)를 구현하려는 생각이 든다면, 바로 거기에서 멈추게하십시오. 기존 구현을 사용하십시오. 경량 템플릿 엔진이 존재하며 231 개의 클래스 중 하나가 원하는 이중 중괄호 구문을 지원합니다. – mario