[Résolu] extraire, couper, etc

Bjr,

Je voudrais analyser la variable reçue {symbol=#ENV{dpt_id}.
Si dpt_id = "0\d", symbol="\d" => supprimer le zéro à gauche.
Si dpt_id = "2A", symbol="20A" => intercaler un zéro entre 2 caractères.

Trop compliqué pour un débutant.

Merci

Salut,

Tu n’as que ces 2 cas de figures possibles ?

Oui

|replace - SPIP ?
[(#GET{symbol}|replace{0\\d,\\d}|replace{2A,20A})]
le double \\ pour échapper \

Ah, ça y est, je comprends le sens de ta question.

Il y a également Si dpt_id = "2B", symbol="20B"
les 2 numéros minéralogiques de la Corse.

Désolé pour l’esprit de l’escalier :woozy_face:

Du coup, je mets ça dans la boucle ?
<BOUCLE_dept(fgw_dept){[(#GET{symbol}|replace{0\\d,\\d}|replace{2A,20A}|replace{2B,20B})]}> ?

Si tu n’as que c’est cas de figure oui, sinon il faudra ptet passer par quelque chose de plus compliqué.
Sauf que là j’avais pas compris qu’il s’agissait de critères d’une boucle. A quoi doit servir le traitement ? Pour l’affichage ? Pourquoi chercher à changer ça dans les critères d’une boucle ? L’objectif n’est pas clair, il manque un peu de contextualisation.

Je vais revoir ma copie et reviens vers toi.
Merci

En fait, il faut que ne procède à l’envers.

Au lieu d’enlever des zéros à gauche pour modifier la variable reçue,
j’ai modifié la variable dans la table.

Maintenant, je voudrais rajouter le zéro à gauche avec un |concat mais apparemment je dois m’emmêler les pinceaux

[(#SYMBOL|strlen|<{2}|?{[(#SET{mineralo, '0'|concat{#SYMBOL}})],#SYMBOL})]

et dans la suite de la boucle

<caption style="font-size:20px;font-weight:bold;">Les communes du département : #NAME (#SYMBOL|#GET{mineralo})<br>

Merci de corriger mes erreurs :

pour le 04 :

Les communes du département : Alpes-de-Haute-Provence (4|0|concat{4})

pour le 22 :

Les communes du département : Côtes d’Armor (22|)

J’ai réussi à améliorer un peu

#SET{zer,0}
	[(#SYMBOL|strlen|>={2}|?{#SYMBOL,#SET{mineralo,#ZER|concat{0,#SYMBOL}}})]
	<caption style="font-size:20px;font-weight:bold;">Les communes du département : #NAME ([(#GET{mineralo}|sinon{#SYMBOL})])<br>

ce qui affiche parfaitement pour les départements de 01 à 09.

Mais ça m’affiche - en plus - en dehors de l’endroit espéré le #SYMBOL dès qu’il est >=10

Si le but est d’afficher des numéros de départements à 2 chiffres utilise
https://www.php.net/manual/en/function.sprintf.php

Le second argument étant #SYMBOL, il faudra dans mes_fonctions.php ou monplugin_fonctions.php créér un filtre de style

function filtre_spip_sprintf($symbol){
 return sprintf("%'.02d\n", $symbol);
}

à utiliser sur

[(#SYMBOL|spip_sprintf)]

Merci bcp pour cette fonction.

ça marche très bien.

Je ne sais pas mettre

Résolu
dans le sujet :roll_eyes:

Je viens de le faire avec le crayon à droite du sujet :
image