在 XSLT 中调用 str_contains 或任何 PHP 函数以将字符串与模式匹配

Posted

技术标签:

【中文标题】在 XSLT 中调用 str_contains 或任何 PHP 函数以将字符串与模式匹配【英文标题】:Calling str_contains or any PHP function in XSLT to match a string to a pattern 【发布时间】:2022-01-08 02:19:27 【问题描述】:

我正在尝试使用 php 函数来查看 XSLT 中的注释是否包含“Written by”。

我对 str_contains 没有任何运气:

<!-- in a loop -->
<xsl:choose>
  <xsl:when test="php:functionString('str_contains', 'Written by', comment)">
       <xsl:value-of select="comment"/>
  </xsl:when>
</xsl:choose>

我的理解是函数去:(PHP Function, Pattern to Match, Variable) 但它不起作用(匹配数据时条件不成立)。

我想知道:

    是版本问题吗? str_contains 必须是 PHP 8,但服务器可能是 7。不确定。 是语法问题吗? 如果是版本问题,有什么不同的函数可以查看 cmets 是否以该模式开头或包含要匹配的模式?

【问题讨论】:

“不工作”不能很好地描述问题。如果您使用 XSLT,为什么不使用原生 XSLT(或者更确切地说是 XPath)函数,例如 starts-with()contains() contains() 有效。请发表回复,我会接受。谢谢。这是我使用的: 我相信您可以将其缩短为&lt;xsl:value-of select="comment[contains(., 'Written by')]"/&gt; 【参考方案1】:

数据匹配时条件不成立

如果函数返回错误的结果,那么您可能没有正确使用它。如果是版本问题(即不支持的功能),我会收到错误消息。

查看 cmets 是否以该模式开头或包含该模式的不同函数是什么

XPath 具有适用于两者的本机函数 - 恕我直言,在您使用 XSLT 时,它们应该是您的首选,然后再使用扩展函数:

starts-with() contains()

【讨论】:

以上是关于在 XSLT 中调用 str_contains 或任何 PHP 函数以将字符串与模式匹配的主要内容,如果未能解决你的问题,请参考以下文章

将外部javaScript函数调用到XSLT文件中

从 javascript 调用 XSLT

如何在 XSLT 中启用文档功能(从 ASP.NET 调用)?

在 WebLogic 中使用相对路径调用 xslt document() 函数

应用所有模板

如何在Marklogic或Couchbase中进行xslt类型转换?