【问题标题】:Using string replace/regex in typoscript for an rte field在 rte 字段的打字稿中使用字符串替换/正则表达式
【发布时间】:2013-08-07 14:42:15
【问题描述】:

我想从 rte 字段中截取除第一段之外的所有内容以作为摘录:

20 = HTML
20.value.field = tx_myextention_field
20.value.parseFunc < lib.parseFunc_RTE
20.wrap = <p class="claim-long">|</p>
20.stdWrap.replacement {
  10 {
    search = /^(.*?\/p).*$/m
    replace = \1>
    useRegExp = 1
 }
}

为什么这个正则表达式不起作用? 还是有更好的解决方案?

【问题讨论】:

  • 您能否更准确地指定“不工作”?没发生什么事?输出错误?错误?
  • 你可以使用 stdWrap.cropHTML 来达到类似的效果。如果第一个太短,它也会缩短一个长的第一段,并使用多个段落。但也许这在你的情况下是可取的? docs.typo3.org/typo3cms/TyposcriptReference/Functions/Stdwrap/…
  • “不工作”意味着整个文本都被渲染了。没有替代品,但感谢cropHTML方法,我认为这应该适用于我的情况
  • @Jost:请发表您的评论作为答案

标签: php regex typo3 typoscript


【解决方案1】:

您可以使用stdWrap.cropHTML 来达到类似的效果。如果第一个太短,它也会缩短一个长的第一段,并使用多个段落。但也许这在你的情况下是可取的?

【讨论】:

    【解决方案2】:

    请注意 HTML cObject 在 TYPO3 4.6 中已被弃用。您应该使用 TEXT cObject。

    我怀疑在您的情况下 parseFunc 未正确应用,因为 stdWrap 不能用于值,而是直接用于对象。如果没有 stdWrap,则保存在数据库中的换行符不会转换为 &lt;p&gt; 标签,因此您的正则表达式无法应用。

    我尝试修复您的 TypoScript(但未经测试):

    20 = TEXT
    20.field = tx_myextension_field
    20.stdWrap.parseFunc < lib.parseFunc_RTE
    20.stdWrap.replacement {
      10 {
        search = /^(.*?\/p).*$/m
        replace = \1>
        useRegExp = 1
     }
    }
    20.wrap = <p class="claim-long">|</p>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 2012-04-26
      • 2018-07-13
      • 1970-01-01
      相关资源
      最近更新 更多