【问题标题】:Using regex_replace with smarty to remove product names使用 regex_replace 和 smarty 删除产品名称
【发布时间】:2016-01-22 00:38:28
【问题描述】:

我正在使用由 Smarty 模板引擎驱动的编辑器。

我有通过 API 传递到 $productName 的数据,该 API 生成如下所示的字符串:

Hills Portable 170 晾衣绳、Versaline Broadline 晾衣绳、Austral Addaline 35 晾衣绳、Hills Rotary 8 晾衣绳

我需要的是仅显示该字符串中来自 Hills Brand 的 第一个产品(上面的品牌是 Hills、Versaline、Austral)。

模板语法允许在命令regex_replace之后传入两个参数:

第一个是要替换的正则表达式,第二个是要替换的文本字符串

代码如下:

{$productName|regex_replace:" ":" "}

我需要帮助的是指定实际的正则表达式,以便保留“Hills”和将其与下一个产品名称隔开的逗号之间的任何内容,并删除其他所有内容。 p>

电流输出: Hills Portable 170 晾衣绳、Versaline Broadline 晾衣绳、Austral Addaline 35 晾衣绳、Hills Rotary 8 晾衣绳

期望的输出: Hills 便携式 170 晾衣绳

这里是 Smarty 关于 regex_replace 的文档:http://www.smarty.net/docsv2/en/language.modifier.regex.replace.tpl

提前致谢!

【问题讨论】:

    标签: php regex string replace smarty


    【解决方案1】:

    正则表达式可能很复杂,但在这种情况下它相当简单。

    {$productName|regex_replace:"/,.+/":""}
    

    此表达式捕获一个逗号,后跟任何其他内容并将其替换为空内容。

    【讨论】:

    • 好的,这可以工作。假设我想从第二个逗号或第三个逗号开始捕获所有内容。那看起来怎么样?非常感谢您的帮助。
    • 嘿,老实说,我对 RegEx 不太擅长,我会尝试一下,但我不能保证任何事情。
    【解决方案2】:

    你可以 1)先拆分字符串,放入数组

    var str = "今天过得怎么样?"; var res = str.split(",");

    res 是一个数组,只需选择所需的索引

    【讨论】:

      猜你喜欢
      • 2014-03-11
      • 2018-06-01
      • 2019-10-23
      • 1970-01-01
      • 2022-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多