Byt*_*ent 6 regex liquid shopify
在我的 Shopify 页面上,我有一堆产品的描述中包含奇怪的字符,我认为这些字符是从 CSV 导入的。如果要逐一检查并手动删除这些字符,工作量会很大。
\n\n我有这个正则表达式脚本可以在客户端删除它们:
\n\n$(function() {\n var regex = /\\?\xc3\x95\xc3\x8c_|_\xc5\x92\xe2\x80\x9a|[\xc5\xa0\xc5\xbd\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc3\x9e\xc3\x9f\xc3\xb0\xc3\xbf_]/gi;\n\n $('.rte').html(function(i, oldHTML) {\n return oldHTML.replace(regex, ' ')\n .replace(/[^\\x00-\\x7F]|\\?/g, '');\n });\n});\nRun Code Online (Sandbox Code Playgroud)\n\n但我想移动类似服务器端的东西,并可能用液体重新创建它。这甚至可以用液体来做吗?如何在服务器端使用这个正则表达式?
\n\n编辑:
\n\n我写了这个hacky代码
\n\n{{ product.description | replace: '?\xc3\x8d\xc3\xad_' | replace: '\xc5\x92\xc3\xa6' | replace: '\xc3\xa4\xc3\xb3\xc2\xbb\xc3\xad\xcb\x86\xc3\xad_\xc3\xad\xe2\x80\x9a_' | replace: '\xc3\xad_\xc5\x92\xe2\x80\x9a\xc3\xad__' | replace: '\xcc\xb4\xc3\x8c_' | replace: '?\xc3\x95\xc3\x8c_' | replace: '?\xc3\xad\xc2\xb4\xc3\xad\xc3\xab_' | replace: '\xc3\x8c_\xc3\xa5\xc3\x87\xc3\x8c__' | replace: '\xc3\xa5\xc3\x8a' | replace: '?\xe2\x80\x99\xc2\xab\xc3\xad\xc3\xab\xc3\xad__' | replace: '?\xc3\xad_\xc5\x92\xc3\x87\xc3\xad_\xc3\xad\xe2\x80\x9a_' | replace: '\xc3\xad\xc2\xab\xc3\xad_' | replace: '?\xc3\xad?\xc3\xad__' | replace: '\xe2\x80\x99\xc3\x87\xc3\xad\xc3\xab_' | replace: '\xc3\xad\xc3\xab_\xc3\xad\xc2\xab\xc3\xad\xcb\x86\xc3\xad\xc3\xab__' | replace: '\xc3\xad\xc3\xab\xc3\xad__\xe2\x80\x99\xc3\x87\xc3\xad\xc3\xab\xc3\xad\xc3\xa6\xc3\xad\xc3\xab\xc3\xad___' | replace: '\xe2\x80\x99\xc3\x87', '' }}\nRun Code Online (Sandbox Code Playgroud)\n\n但这仅在我知道需要替换的特定字符串而不是像我的 javascript 正则表达式中那样从一组字符串中搜索时才有效。
\n您可以使用jekyll-regex-replace Ruby Gem,或者如果需要进一步调整,可以编写自己的插件。我不是 100% 确定你的用例是否 100% 匹配,但沿着这条线:
\n_config.yml:plugins:\n ...\n - jekyll-regex-replace\nRun Code Online (Sandbox Code Playgroud)\n{{ product.description | regex_replace: \'\\?\xc3\x95\xc3\x8c_|_\xc5\x92\xe2\x80\x9a|[\xc5\xa0\xc5\xbd\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc3\x9e\xc3\x9f\xc3\xb0\xc3\xbf_]\', \'\' }}\nRun Code Online (Sandbox Code Playgroud)\n如果您使用的主机限制了 Jekyll 插件(https://pages.github.com/versions/),那么我只能建议转移到另一个不限制 Jekyll 插件的免费提供商,例如GitLab,这就是我所做的以及。
\nGemfile:group :jekyll_plugins do\n ...\n gem "jekyll-regex-replace", "~> 1.1.0"\nRun Code Online (Sandbox Code Playgroud)\nGitHub 注释:您也许可以使用 GitHub Action 定义您自己的自定义 Jekyll 构建。不搬家也是一种可能。
\n如果您的产品描述中有来自 CSV 的奇怪字符,为什么不直接清理 CSV,然后重新导入干净的描述文本呢?为自己省去悲伤。删除奇怪的字符表明您搞乱了数据编码。UTF-8 是你的朋友。
使用液体替换过滤器对您有用,但这是超级黑客......最好找到错误的根源并修复它。删除这些字符会有风险,因为在某些情况下您可能会修复某些单词的显示,但在其他情况下,损坏可能仍然存在。
请注意,液体替换过滤器是您在服务器端使用的所有内容,它是您的正则表达式选项,即使它与通常的正则表达式功能相去甚远。