Accueil > Documentation > Les balises XPX > SET

SET

La balise <SET> permet de déclarer une variable, lui affecter une valeur, ou exécuter une transformation sur cette valeur.

Type de variables

On remarque trois types de variable: les variables locales, les variables globales et les variables de session. Pour déterminer la qualité de la variable, lors de sa déclaration.

On utilisera l’attribut <set name ="nom_variable"> pour créer une variable locale. On peut aussi utiliser <set local="nom_variable">. Une variable locale est créée dans le "scope" en cours. Voir balise <scope>.

Pour une variable globale, on utilise l’attribut <set global ="nom_variable">.

Pour créer une variable de session, il suffit d'utiliser <set session="nom_variable">. Une variable de session reste accessible sur toutes les pages de votre site tant que la session reste ouverte. La session a une durée déterminé par le paramétrage du serveur et de votre navigateur.

<!-- Variable locale -->
<set name="variable1">
<!-- Variable de session-->
<set session="variable2">

<set value="..." [charset="char encoding"]>

Une fois le nom de la variable déterminé, on utilise l’attribut « value=’’valeur_variable’’ » pour lui donner une valeur.

Pour utiliser les  variables que vous avez créées, vous devez placer le nom de la variable entre « $ ». Cette notation peut être utilisée directement dans le html, pour afficher le contenu de la variable dans un paragraphe par exemple, ou être utilisé dans du code xpx.

Le charset indique dans quel format on stocke la valeur. Par défaut c'est le format indiqué par $phccharset$. Si le phccharset et l'encoding sont différents, alors une conversion de phcchartset vers l'enconding est appliqué.

Pour obtenir la liste des encoding disponibles sous Linux,utilisez la commande : iconv -l

<set name="exemple" value="1">

$exemple$

Sous-ensemble d'une chaîne

Vous pouvez également choisir de n'afficher qu'un certain nombre de caractères de votre variable. Pour cela, ajoutez à la suite du nom de la variable, mais toujours entre les "$", (x,y). X étant le premier caractère à être affiché, et Y le nombre de caractères qui seront affichés à la suite, la numérotation des caractères commençant à 1.

Pour utiliser une variable comme indice x ou y, indiquer le nom de la variable sans délimiteurs $

<set name="texte" value="bonjour">

$texte(4,4)$ renvoie jour


<set name="nbr" value="3">
<set name="texte" value="bonjour">

$texte(4,nbr)$ renvoie jou

Variables imbriquées

Si vous voulez lire une variable dont le nom dépend d’autre variable (comme par exemple d'un compteur), vous devez écrire votre variable toujours entre "$", mais en ajoutant le nom de la variable suplémentaire entre "[]".

<set name="id" value="14">

$var[id]$ équivaut à $var14$

Les nombres

<set expr="..." >

Il est également possible d’attribuer à une variable, une valeur égale à un calcul numérique. Pour cela, on remplace l’attribut « value=’’valeur_de_la_variable ‘’» par l’attribut « expr=’’calcul_numérique’’ ».

Pour les calculs, vous pouvez utiliser les opérateurs : + - * /  ()        

<set name=”calcule” expr=”3+(2*8)”>

$calcule$ renvoie donc la valeur 19

<set money="..." >

Lorsque vous réalisez des calculs d’argent, vous pouvez déclarer une nouvelle variable pour transformer l’affichage d’une valeur, pour qu’elle soit compatible avec le format monétaire français. Pour cela utiliser l'attribut: « money=’’valeur’’ ».

<set local="prix" money="3414.30">

 

$prix$ prend la valeur : 3 414,30

<set bit="..." >

Vous pouvez réaliser des calculs binaires avec le XPX, pour cela il faut indiquer le numéro du bit que vous souhaitez obtenir.

La numérotation des bits est comprise entre 0 et 31.
Les entiers étant  signés, en 32 bits les valeurs vont de -2147483648 (0x80000000) à 214748367 (7fffffff)

<set local="bit0" EXPR="201" BIT="0">
<set local="bit1" EXPR="201" BIT="1">
<set local="bit2" EXPR="201" BIT="2">
<set local="bit3" EXPR="201" BIT="3">
<set local="bit4" EXPR="201" BIT="4">
<set local="bit5" EXPR="201" BIT="5">
<set local="bit6" EXPR="201" BIT="6">
<set local="bit7" EXPR="201" BIT="7">
201=$bit7$$bit6$$bit5$$bit4$$bit3$$bit2$$bit1$$bit0$

<set biton="..." bitoff="..." >

Vous pouvez choisir de changer la valeur d’un bit à 0 ou 1. Pour cela, on remplace l’attribut précédent, « bit » par « biton=’’numéro_du_bit’’ » pour le passer à 1, et par « bitoff=’’numéro_du_bit’’ » pour le passer à 0.

Par exemple, dans le cas de la gestion des droits utilisateurs, on peut choisir d’attribuer un bit pour chaque type d’utilisateur :

(1) 001 => visiteur

(2) 010=>rédacteur

(4) 100=>modérateur

De sorte que l’utilisateur qui a ses droit à 5, est considéré à la fois comme un visiteur et un modérateur (4 + 1 = 5).

Ainsi, on peut changer rapidement les droits en changeant la valeur du bit qui correspond au rang des droits que l’on veut changer :

<set local="droit" expr="$droit_utilisateur$" biton="1">

Dans ce cas, quelques soient les droits précédemment accordés à l’utilisateur, on lui donne les droits de "visiteur", car la valeur du premier bit est passée à 1.

<set local="droit" expr="$droit_utilisateur$" bitoff="3">

Ici, on retire le droit de "modérateur" à l’utilisateur, en passant la valeur du troisième bit à 0.

<set datetime="..." format="..." lang="..." >

Vous pouvez régler l'affichage d'une date (ou d'une heure), par l'attribut datetime="votre_date".

Le format d'entrée de "datetime" est déterminé selon le séparateur utilisé:
     / alors le format est francais dd/mm/aa
     . alors le format est uk mm.dd.aa
     - alors le format est iso aa-mm-dd
     rien alors format iso aammdd

L'heure est entrée sous forme hh:mm:ss (l'heure est facultative).
Si la date entrée est vide ou non convertible, c'est la date et heure du système qui est utilisée.

Dans l'attribut "format", placer les caractères suivants pour formater votre date:

dd Affiche le jour en numérique
ddd Affiche les trois premières lettres du jour
dddd Affiche le jour en toutes lettres
mm Affiche le mois en numérique
mmm Affiche les trois premières lettres du mois
mmmm Affiche le mois en toutes lettres
yy Affiche l'année en décénnie
yyyy Affiche l'année entière
hh Affiche les heures
mn Affiche les minutes
ss Affiche les secondes
, | " ' : ( ) \ . espace             Caractères séparateurs acceptés
yyyymmdd Valeur par défaut
tt timestamp (en sec. depuis la 01/01/1970 0h00

Enfin, vous pouvez choisir la langue d'affichage des dates sous format textuel, avec l'attribut "lang". Il peut prendre trois valeurs: "es" pour l'espagnol, "fr" pour le français et "en" pour l'anglais (valeur par défaut)

<set name="date" datetime="100101 00:00:01" format="ddd dd mmmm yyyy hh:mn" lang="fr">

Donne pour résultat : "ven 01 janvier 2010 00:00"

<set rand="...">

Enfin, il existe un dernier attribut sur les nombres. L’attribut « rand » permet de donner à une variable une valeur numérique entière aléatoire, comprise entre 1 et la valeur maximum que vous précisez de cette manière : « rand="valeur_maximum"»

<set local="aléatoire" rand="100">

$aléatoire$ aura une valeur entière  comprise  entre 1 et 100.

Les chaines de caractères

<set upcase="..." >

L’attribut « upcase=’’votre_string’’ » remplace tous les caractères écrits en minuscule par leur équivalent en majuscule.

Pour une bonne gestion des accents en UTF-8, il faut déclarer la variable d'environnement LC_CTYPE à fr_FR.

<set local="texte" upcase="Du texte en minuscule">

$texte$ prend la valeur : DU TEXTE EN MINUSCULE

<set lowcase="..." >

L’attribut « lowcase=’’votre_string’’ » transforme vos caractères majuscules, par leurs équivalents en minuscule.

Pour une bonne gestion des accents en UTF-8, il faut déclarer la variable d'environnement LC_CTYPE à fr_FR.

<set local="texte" lowcase="DU TEXTE EN MAJUSCULE">

$texte$ prend la valeur : du texte en majuscule

<set noaccent="..." >

L’attribut « noaccent="votre_string" » remplace les caractères accentués par leurs équivalent sans accent.

Pour une bonne gestion des accents en UTF-8, il faut déclarer la variable d'environnement LC_CTYPE à fr_FR.

<set local="texte" noaccent="Du texte accentué">

$texte$ prend la valeur : Du texte accentue

<set strescape="..." >

L’attribut « strescape="votre_string" » remplace les caractères quotes de votre string en un équivalent pouvant être inséré dans une base de données.

<set local="texte" strescape="l’apostrophe">

$texte$ prend la valeur l'apostrophe pour la version Sybase ou l\’apostrophe pour la version Mysql.

Attention ! L'utilisation de cette fonction dans le but d'une utilisation dans une requête SQL, implique la désactivation de la variable sqlescapestr.

<set keycode="..." >

L’attribut « keycode="votre_string" » affecte une clé cryptée sur la base de string à une variable. La clé contient 16 caractères (majuscules et chiffres).

<set local="texte" KEYCODE="mot de passe">

$texte$ contient par exemple : CX8D7JZ9LM9G8LL3

<set strcode="..." >

L’attribut « strcode="votre_string" » encode les caractères non-ascii en HTML.
Ce traitement gère aussi les doubles quotes (") qui sont remplacées par #34;

<set local="texte" strcode="Du texte accentué">

$texte$ prend la valeur : Du texte accentu&ecute;

<set strdecode="..." >

L’attribut « strdecode="votre_string" » transforme les caractères codés en HTML par leur correspondance en ascci.

<set local="texte" strdecode=" Du texte accentu&ecute;">

$texte$ prend la valeur : Du texte accentué

<set urlcode="..." >

L’attribut « urlcode="votre_string" » transforme une chaine de texte pour qu'elle soit utilisable dans une URL. Les espaces sont transformés en +, et les caratères spéciaux et accentués sont transformés en leurs équivalents en hexadécimal.

<set local="texte" urlcode="une adresse internet">

$texte$ prend la valeur : une+adresse+internet

<set replace="..." by="..." >

Vous pouvez aussi changer le texte contenu dans une string. Dans ce cas, vous devez utiliser les attributs « value="contenu_original" » pour préciser le texte de base, « replace="texte à changer" » pour selectionner le morceau de texte qui sera supprimé et « by="texte de remplacement" » pour indiquer par quoi vous voulez remplacer le texte précédemment sélectionné.

<set local="formule_politesse" value="Bonjour" replace="jour" by="soir">

Transforme la valeur initial "Bonjour" en "Bonsoir"

<set len="..." >

Vous pouvez également obtenir le nombre de caractères dans une chaine de caractère. Pour cela, il suffit de déclarer une nouvelle variable qui contiendra ce nombre et utiliser l’attribut « len="chaine_de_caratère" » pour indiquer la string à compter.

<set local="taille" len="commentaire">

On peut ainsi facilement faire un test pour voir si la chaine de caractère est trop grande ou non pour être affichée.

<set trim="..."> <set ltrim="..."> <set rtrim="...">

La fonction TRIM permet d'enlever les espaces, tabulations, sauts de ligne et retours chariot placés en début et fin de chaîne.

LTRIM pour Left TRIM enlève seulement ces caractères en début de chaîne.

RTRIM pour Right TRIM enlève seulement ces caractères en fin de chaîne.

<set local="utile" trim="  a garder   ">

$utile$ -> "a garder"

<set xmlcode="...">

L’attribut « xmlcode="votre_string" » transforme les caractères spéciaux en &#nn; ou nn est le code Ascii du caractère.

<set name="test" xmlcode="ça fait très mâl!">

$test$ -> &#231;a fait tr&#128;s m&#226;l!

<set encode64="..." >

L’attribut « encode64="votre_string" » transforme une chaine de texte au format base64.

Disponible à partir de la version 3.8b18

<set local="texte64" encode64="Mon texte!">

$texte64$ prend la valeur : TW9uIHRleHRlXCE=

<set decode64="..." >

L’attribut « decode64="votre_string" » transforme une chaine au format base64 vers sa valeur d'origine.

Disponible à partir de la version 3.8b18

<set local="texte" decode64="TW9uIHRleHRlXCE=">

$texte$ prend la valeur : Mon texte!

<set hash="..." name="..." value="..." [hmac="key"]>

Depuis la version v3.8b-rc9, l'attribut <hash="algo"... value="..."> parmet de calculer le hachage de value, retourné dans name.

algo peut valoir sha1, sha256 ou md5.

On peut utiliser une clef hmac pour le hachage.

<set name="key" value="23C7943BB8F95E75BB4027">
<set name="val" value="La valeur dont je veux calculer le hash">
<set name="varHash" value="$val$" hmac="$key$" hash="sha256">

<set html2text="$textHtml$" name="pureText">

Convertit un texte contenant du code HTML en texte simple en supprimant toutes les balises.

<set name="textHTML" value="<body><html><p>Texte à isoler</p></body></html>">
<set name="pureText" html2text="$textHTML$">

Donnera : Texte à isoler

<set encrypt="$chaine$"...>

Encrypte la chaine en utilisant le protocole AES256.

ATTENTION : le résultat est binaire, il doit être converti en Base64 (encode64) ou en hexadécimal (chartoexa) si il doit être affiché ou utilisé en html.

<set name="nomCode" encrypt="$monTexte">
<set name="nomCodeB64" encode64="$nomCode$">

<set decrypt="$chaine$"...>

Décrypte une chaine obtenue par <set encrypt="...">.


<set name="nomBin" encode64="$nomCodeB64$">
<set name="texte" decrypt="$nomBin$">

<set chartohexa="...">

Convertit une chaine en caractères hexadécimaux (majuscules)


<set name="var" chartohexa="abc">

Ici, $var$ vaudra 616263 (61,62,63 sont les codes ASCII de a, b et c en hexadécimal).

<set hexatochar="...">

Convertit des caractères hexadécimaux (majuscules) en leur équivalent ASCII.


<set name="var" hexatochar="616263">

Ici, $var$ vaudra abc

Télécharger

Téléchargez rapidement la dernière version du XPX: Version 3.8-rc16 - 05/02/2019

Le saviez vous ?

Le xpx permet également d’envoyer des mails avec un contenu dynamique et adapté à chaque contact.

FAQ

Venez nous poser vos questions et voir les problèmes courants que vous pouvez rencontrer

Don

Aidez-nous à faire vivre ce site en faisant un don

Condition d'utilisation