php - HTML/HP:Emogrifier 将 {} 变成 %7B 和 %7D
问题描述
我目前正在设置一个电子邮件模板,它有两部分: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 已损坏,它使用占位符设置,在 emogrify 过程后被正确的链接替换:
%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
当我在没有 emogrify 的情况下执行此操作时,链接会成功替换。那么有人知道我该如何解决这个问题吗?
解决方案
这似乎是一个错误。当您查看 Emogrifier 的 Github 时,您会发现还有一些带有其他符号的错误,例如美元符号$
。我现在用这个解决方法暂时修复了它,但这个错误需要在 Emogrifier 本身上得到修复。
解决方法(希望对某人有所帮助):
//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 );
推荐阅读
- java - javascript 错误:a.tagName.toUpperCase 不是使用 Selenium 和 Java 单击按钮的函数错误
- c# - 在 Net Core 3.1 MVC 中使用 Ajax 请求触发 IActionResult
- sql - 根据具有多个条件的另一个表中的匹配列值过滤一个表中的行
- android - 如何使用 OSM Android 获取限速值
- liferay-7 - Liferay Service Builder - 是否有推荐的方法来描述 service.xml 中的自引用关系?
- docker - 如何使用 docker 桌面运行 docker-compose?
- netcdf - 是否有 NCO 命令可以更改 netcdf 中变量的时间戳?
- python - 如何在子进程弹出的情况下清除“cmd.exe”的 STDOUT?
- python - Google Cloud Storage 存储桶 list_blobs 前缀太宽泛
- r - 为 unique() 函数使用管道