Je réalise un module que j'ai baptisé PHPML visible ici :
sur github disponible à : github point com /DarkSynx/PHPML
et dans ce module je détecte les balises de type <PHPML ...></PHPML>
l'objectif est d'avoir un contenu 100% HTML pour une meilleur lisibilité tout en cantonnant les possibilités du PHP
c'est une forme de restriction ou de contrôle du périmètre d'action. les personnes qui l'exploite doivent
utilisé des fonction non sensible de PHP prévue dans le champs des possibilités proposé par le PHPML et garder un visuel de lecture totalement HTML.
voici à quoi ressemble PHPML :
<phpml actions="class.methode" exploit="data1" inserts="data2"> data3</phpml>
<phpml:class.methode="data1" inserts="data2">data3</phpml>
LE FORMAT LONG :
<phpml actions="class.var" exploite="user" insert="3"></phpml>
OU LE FORMAT REDUIT:
<phpml:class.var="user" insert="3"></phpml>
La partie Actions ou phpml: permet plusieurs possibilité
<phpml:var="user" isert="3"></phpml> cette forme va directement appeler la class phpml et var
si je désire exploité le constructeur avec des drapeaux de la class
je peux donc utilisé @drapeau1#drapeau2
<phpml:class.var@supervar#default_true="user" insert="3"></phpml>
il existe une autre forme
<phpml:class.var(elements)="user" insert="3"></phpml>
cela permet d'exploité visuellement différement des valeurs ou des drapeaux
et ici à quoi il ressemble en exploitation :
<phpml:var="user" inserts="$test"></phpml>
<phpml:head="{
'doctype':'html',
'lang':'fr',
'title':'test',
'base':'',
'head':{
'meta':'',
'link':[
{'rel':'alternate', 'href':'en/control-structures.if.php', 'hreflang':'en'},
{'rel':'alternate', 'href':'en/control-structures.if.php', 'hreflang':'en'},
{'rel':'alternate', 'href':'manual/en/control-structures.if.php', 'hreflang':'en'}
]
}
}"><script>
</script></phpml>
<phpml:if(user==2)>
<done>
<div>test 1</div>
<div>test 2</div>
<div>test 3</div>
</done>
<elseif(user==3)>
<div>test 4</div>
<div>test 5</div>
<div>test 6</div>
</elseif>
<else>
<div>test 7</div>
<div>test 8</div>
<div>test 9</div>
</else>
</phpml>
<phpml:end>
<footer></footer>
</phpml>
j'utilise le site regex101 point com pour travailler sur mon regex
à l'url : regex101 point com /r/80ZdIj/1
Et je réalise des tests de cas de figure extréme et donc
mon problème est tout en bas de la zone de texte là ou vous avez marqué:
ici ">
! désolé j'ai pas trouvé comment en envoyer d'image depuis la zone envoyer un nouveau sujet
ma problématique est que mon Regex bloque sur le "> dés que je le retire la cohérent fonctionne
et malheureusement je n'arrive pas à rajouté se cas de figure au regex pour qu'il arrive à prendre cela en compte.
mon niveau en Regex est trais faible c'est pour cela que je demande de l'aide.
je rajouterais évidement les nom des personnes à mon projet qui m'ont aider pour cette partie.
je vous copy colle mon regex :
Code : Tout sélectionner
(*UCP)<phpml\s*(?|(?#
------------------------------------------------------------------------------
)(?:\s*actions="(?:(?(R)\w++|[^""]*+)|(?R))*"\s*)?(?#
)(?:\s*exploit="(?:(?(R)\w++|[^""]*+)|(?R))*"\s*)?|(?#
------------------------------------------------------------------------------
)\s*:\w+\.?\w*(?|\@\w+(?:\#\w+)?|\((?:(?(R)\w++|[^()]*+)|(?R))*\))?\s*(?#
)(?:="(?:(?(R)\w++|[^""]*+)|(?R))*"\s*)?)(?#
------------------------------------------------------------------------------
)(?:inserts="(?:(?(R)\w++|[^""]*+)|(?R))*"\s*)?(?#
------------------------------------------------------------------------------
)\s*>(?:(?(R)\w++|[^><]*+)|(?R))*<\/phpml>|(?#
------------------------------------------------------------------------------
)<\w*\s*[[:word:][:cntrl:][:blank:]+*-="\'\/\\\\.,;:[\](){}\x20?#&%|@]*\s*>|(?#
------------------------------------------------------------------------------
)<!--\s*[[:word:][:cntrl:][:blank:]+*-="\'\/\\\\.,;:[\](){}\x20?#&%|@]*\s*-->|(?#
------------------------------------------------------------------------------
)Mercie d'avance à tous pour votre aide.
et si vous voulez tester le projet vérifier bien à modifier
<?php
namespace Eukaruon\modules;
use Exception;
use Eukaruon\modules\Modules_phpml;
sur mon github j'ai juste sortie le deux modules de mon projet quelque petites modifications et ça devrait fonctionné