HTML / HP:Emogrifier将{}转换为%7B和%7D

时间:2018-12-30 15:50:53

标签: php html css

我当前正在设置一个电子邮件模板,该模板包含两个部分:HTML和CSS。为了将所有内容放在一起并将HTML与CSS合并,我正在使用PHP Emogrifier。

现在我发现,当我对这两个元素进行记忆化时,uft-8编码存在问题。

所有类似于Ä,Ü,Ö的作品都可以正确显示,但是当我在此处将这样的链接放入内容时,utf-8解码不适用于此元素:

在气之前:

  

<a href="{password_reset_link}" id="button">Passwort zurücksetzten</a>

弄湿后:

<a href="%7Bpassword_reset_link%7D" id="button" style="color: #69f0ae; text-decoration: none; font-size: 20px; text-align: center; display: block; line-height: 1.7em !important; padding: .3em 1em;
> border: 2px solid #69f0ae; border-radius: 3px; -webkit-border-radius:
> 3px; -moz-border-radius: 3px; width: 40%; margin: auto; cursor:
> pointer !important;">Passwort zurücksetzten</a>

因此,您可以看到href断开了,该href设置了一个占位符,该位符在进行自动处理之后被替换为正确的链接:

%7Bpassword_reset_link%7D

这是我对内容进行弄皱的方式:

//Apply CSS styles inline for picky email clients.
try {
    $emogrifier = new Emogrifier( $message, $css );
    $message    = $emogrifier->emogrify();
} catch ( Exception $e ) {
    $logger = wc_get_logger();
    $logger->error( $e->getMessage(), array( 'source' => 'emogrifier' ) )
}

$message$css包括内容和样式。当我在没有弄湿的情况下执行操作时,链接将成功替换。那么,有谁知道我该如何解决?

1 个答案:

答案 0 :(得分:1)

这似乎是一个错误。当您检查Emogrifier的Github时,您会发现还有其他带有其他符号的错误,例如美元符号//Apply CSS styles inline for picky email clients. try { $emogrifier = new Emogrifier( $message, $css ); $message = $emogrifier->emogrify(); } catch ( Exception $e ) { $logger = wc_get_logger(); $logger->error( $e->getMessage(), array( 'source' => 'emogrifier' ) ); } $message = str_replace( array( '%7B', '%7D' ), array( '{', '}' ), $message ); 。我现在已通过此变通办法临时修复了该问题,但此错误需要在Emogrifier本身上进行修复。

解决方法(希望对您有所帮助):

this.loginForm.username