es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Llamando a str_contains o cualquier función de PHP en XSLT para concordar una cadena con un patrón.

Estoy intentando utilizar una función de PHP para ver si un comentario en XSLT contiene “Written by”.

No he tenido suerte con str_contains:






Mi entendimiento es que la función va: (Función de PHP, Patrón a Buscar, Variable) pero no está funcionando (la condición no es verdadera cuando se encuentra la información).

Me pregunto:

1) ¿Es un problema de versión? str_contains debe ser para PHP 8, pero tal vez el servidor es 7. No estoy seguro.
2) ¿Es un problema de sintaxis?
3) Si es un problema de versión, ¿qué función diferente hay para ver si un comentario comienza con o contiene ese patrón a buscar?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para la función PHP que comprueba si un comentario en XSLT contiene “Escrito por”

    Si tiene problemas al utilizar la función str_contains de PHP para comprobar si un comentario en XSLT contiene “Escrito por”, puede haber varias razones por las que no funciona. Aquí le presentamos algunas soluciones para este problema.

    Problema de Versión

    En primer lugar, podría tratarse de un problema de versión, ya que str_contains se introdujo en PHP 8.0, y si su servidor ejecuta PHP 7, la función no funcionará. En este caso, puede intentar utilizar la función strpos, que está disponible en versiones anteriores de PHP. Aquí tiene un ejemplo de cómo puede utilizar strpos en su XSLT:

    <xsl:when test="php:functionString('strpos', comment, 'Escrito por') !== false">
       <xsl:value-of select="comment"></xsl:value-of>
    </xsl:when>
    

    Problema de Sintaxis

    En segundo lugar, podría haber un problema de sintaxis en su código. Asegúrese de que está pasando los parámetros en el orden correcto y de que está utilizando la sintaxis correcta para la función php:functionString. Aquí tiene un ejemplo de la sintaxis correcta:

    <xsl:when test="php:functionString('str_contains', comment, 'Escrito por')">
       <xsl:value-of select="comment"></xsl:value-of>
    </xsl:when>
    

    Función Alternativa

    Si ninguna de las soluciones anteriores funciona, puede intentar utilizar una función alternativa para comprobar si un comentario comienza o contiene “Escrito por”. Por ejemplo, puede utilizar la función preg_match, que utiliza expresiones regulares para buscar un patrón en una cadena. Aquí tiene un ejemplo de cómo puede utilizar preg_match en su XSLT:

    <xsl:when test="php:functionString('preg_match', '/Escrito por/i', comment)">
       <xsl:value-of select="comment"></xsl:value-of>
    </xsl:when>
    

    En este ejemplo, la expresión regular /Escrito por/i buscará el patrón “Escrito por” (sin distinción entre mayúsculas y minúsculas) en la variable comment. Si el patrón se encuentra, la condición será verdadera y se mostrará el comentario.

Comments are closed.