Liquid模板语言中如何将转义序列转回特殊字符?
在Liquid中还原转义序列为特殊字符的方法
场景说明
你使用escape过滤器处理product.type后,内容被转义为包含'(单引号转义)、"(双引号转义)的格式,需要在前端恢复为带原始单双引号的正常文本。
解决方案
Liquid没有内置的“反转义”过滤器,但可以通过以下两种方式实现需求:
1. 链式replace过滤器(快速实现)
直接对已转义的内容执行批量替换,把转义序列换回原始符号:
{{ product.type | escape | replace: ''', "'" | replace: '"', '"' }}
如果你的场景不需要先执行escape转义,直接输出原始内容即可,这是最简便的方式:
{{ product.type }}
2. 自定义过滤器(适合频繁使用的场景)
若需要多次处理这类反转义操作,可以在主题中添加自定义过滤器:
- 进入Shopify后台的主题代码编辑,找到
assets目录下的theme.js或新建custom-filters.js - 添加以下代码:
Liquid.registerFilter('unescape_chars', function(str) { return str.replace(/'/g, "'").replace(/"/g, '"'); });
之后在模板中即可直接调用自定义过滤器:
{{ product.type | escape | unescape_chars }}
效果验证
处理后,原本的转义内容:
100FWTB, 25L-BELOW, 4'4"-5'5", 5'0" - 5'11", FIREWIRE, FUTURES, Groveler Surfboards, HELIUM 2, HELIUM CONSTRUCTION, IN-STOCK, N60, partial_payment, PO#514, SHORTBOARDITEMS, SHORTBOARDS, SURFBOARDS
将被还原为你期望的格式:
100FWTB, 25L-BELOW, 4'4"-5'5", 5'0" - 5'11", FIREWIRE, FUTURES, Groveler Surfboards, HELIUM 2, HELIUM CONSTRUCTION, IN-STOCK, N60, partial_payment, PO#514, SHORTBOARDITEMS, SHORTBOARDS, SURFBOARDS
内容的提问来源于stack exchange,提问作者Midhun k
相关产品推荐
相关产品推荐

