Bonjour,
Je souhaiterais extraire la partie d’un email à gauche du signe @.
Comme |explode
renvoie un tableau, j’essaie de récupérer la 1° partie
#SET{my_array, #GET{email}|explode{@}}
#GET{my_array/0}
Mais je dois faire une erreur de codage, ça ne marche pas.
Merci de vos lumières
b_b
Janvier 6, 2025, 9:10
2
Le filtre |table_valeur - SPIP est ton ami sur ce coup là.
Mais tu peux aussi le faire la fonction PHP PHP: strstr - Manual
Directement avec le filtre |match - SPIP :
[(#GET{email}|match{^(.*)@,1})]
Merci à vous 2,
Je suis dans la configuration particulière d’un modèle.html inclus dans /squelettes qui est appelé par newsletters.
Je dois donc échapper toutes les commandes SPIP : \#ENV{email}
Mais \[(#GET{email}|match{^(.*)@,1})]
me renvoie [(|match{^(.*)@,1})]
Je ne sais pas comment m’en sortir…
Comportement très bizarre dans une boucle.
J’ai essayé la solution de b_b à l’intérieur de la boucle
<?php
$email = '\#ENV{email}';
$domaine = strstr($email, '@');
$user = strstr($email, '@', true);
echo 'le mail est : '.$email.'<br />';
echo 'le domaine est : '.$domaine.'<br />';
echo 'le nom est : '.$user ;
?>
mais je n’obtiens que des réponses partielles :
le mail est : ab.cd@yz.fr
le domaine est : (vide)
le nom est : (vide)
Je ne comprends pas le hic
Tu ne mélangerais pas #ENV{email}
et #GET{email}
dans le |match
?
Que je mette #GET{email]
ou #ENV{email}
dans le |match
ne change rien. Je n’obtiens rien.
Alors que, ailleurs dans la boucle, \#ENV{email}
me renvoie bien un email.
Alors que si je mets un email en dur
<BOUCLE_news()>
<?php
$email = 'ab.cd@yz.fr';
$domaine = strstr($email, '@');
$user = strstr($email, '@', true);
echo 'le mail est : '.$email.'<br />';
echo 'le domaine est : '.$domaine.'<br />';
echo 'le nom est : '.$user ;
?>
</BOUCLE_news>
j’obtiens bien dans ma boucle les réponses attendues :
le mail est : ab.cd@yz.fr
le domaine est : @yz.fr
le nom est : ab.cd
Une idée ?
Bon,
J’ai bien galéré mais j’ai réussi à débloquer la situation.
Merci pour vos suggestions qui m’ont mis sur la piste.
Login : <b> \#ENV{nom} </b><br />
Votre mot de passe <u>provisoire</u> : <b>[(\#ENV{email}|match{^(.*)@,1})]_1</b>