在 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() 有效。请发表回复,我会接受。谢谢。这是我使用的:<xsl:value-of select="comment[contains(., 'Written by')]"/>
。
【参考方案1】:
数据匹配时条件不成立
如果函数返回错误的结果,那么您可能没有正确使用它。如果是版本问题(即不支持的功能),我会收到错误消息。
查看 cmets 是否以该模式开头或包含该模式的不同函数是什么
XPath 具有适用于两者的本机函数 - 恕我直言,在您使用 XSLT 时,它们应该是您的首选,然后再使用扩展函数:
starts-with() contains()【讨论】:
以上是关于在 XSLT 中调用 str_contains 或任何 PHP 函数以将字符串与模式匹配的主要内容,如果未能解决你的问题,请参考以下文章
如何在 XSLT 中启用文档功能(从 ASP.NET 调用)?