Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

307
Vistas
Sistema de plantillas pequeñas, el final de /si no detecta correctamente

Si escribo solo la siguiente línea, la corta sin razón, así que...:

Hola,

Necesito ayuda para esto, estoy fuera de mi conocimiento.

Estoy atascado en un pequeño sistema TPL que debería hacer algunas declaraciones foreach y if. Hago esto en PHP, pero no sé si esto es relevante.

https://regexr.com/62ho9 aquí puedes ver mi problema. Quiero que la expresión regular termine en el segundo {/if} pero no es así. ¿Hay alguna solución posible para hacer esto con expresiones regulares?

Si no, ¿tienes una buena idea para que PHP haga lo que quiero? Porque no tengo ideas.

 (?<={if \!TEST})([\s\S]*?)(?={\/if})
 <a class="dropdown-item" href="#"> {if !TEST} {USERNAME} {if !TEST} HI {/if} klöaksdölsa {/if} asdas {if !TEST}asd{/if} </a>

Por el momento uso {if ID declaración} LOREM {/if ID} pero la solución más elegante sería sin ID :D

(PRUEBA: Hola chicos) <-- ¡¿porque lo corta todo el tiempo desde el principio?!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Sí, puede usar recursividad en expresiones regulares de PHP y la expresión regular que podría usar es

 (?s){if\s+!TEST}((?:(?!{(?:if\s+!TEST|\/if)}).|(?R))*){\/if}

Vea la demostración de expresiones regulares . Solo necesita obtener el valor del Grupo 1 después de obtener una coincidencia.

Detalles :

  • (?s) - una bandera s en línea
  • {if\s+!TEST} - {if , uno o más espacios en blanco, !TEST}
  • ((?:(?!{(?:if\s+!TEST|\/if)}).|(?R))*) - Grupo 1: cero o más ocurrencias de
    • (?!{(?:if\s+!TEST|\/if)}). - cualquier carácter que no sea el punto de inicio de una secuencia de caracteres {if !TEST} y {/if}
    • |
    • (?R) - todo el patrón recursivo
  • {\/if} - una subcadena {/if} .
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda