Bonjour à tous,
Je cherche à implémenter une fonction utilisateur.
J’ai un problème avec l’argument qui est une coordonnée latitude,longitude qui sont par définition 2 coordonnées décimales.
l’explode sur la virgule ne fonctionne pas, du coup j’investigue :
ma fonction de test dans le user.function :
public static function splitString($Coord_H){
return strlen($Coord_H)." # ".$Coord_H;
}
j’ai une info #[Habitants][Ben][coordonnees]# qui vaux à peu près : 45.5698592,1.9535183
quand je test :
splitString(#[Habitants][Ben][coordonnees]#)
j’ai comme retour :
Résultat : "8 # ‹ « 45.5698592,1.9535183 » ›
ce qui n’est absolument pas exact
si je test :
splitString("45.5698592,1.9535183")
j’ai
Résultat : "11 # « 45.5698592 »
si j’écris en dur la variable string dans la fonction :
public static function splitString($Coord_H){
$Coord_H="45.5698592,1.9535183";
return strlen($Coord_H)." # ".$Coord_H;
}
je retrouve bien :
Résultat : 20 # 45.5698592,1.9535183
J’ai donc un truc qui se passe au moment ou l’interpréteur balance les arguments à la fonction.
J’ai essayer de caster la string, d’y ajouter des caractères de remplacer avec des expression régulières, etc…
j’ai également tester un strpos sur la virgule, le point, un chiffre, et j’ai toujours eu un false en retour…
bref je n’y comprend rien, est ce qu’il y a un moyen de passer cette limitation?
A noter que dans un bloc code dans un scénario, explode et autre strpos fonctionnent parfaitement.
[Edit]
les gettype me retourne bien les string ou ça doit,
quand dans la fonction je fait :
public static function splitString($Coord_H){
return explode(', ',$Coord_H)[0];
}
j’ai en retour :
Résultat : 45.5698592,1.9535183
et évidemment rien dans l’index 1…
[edit2]____________________________
encore plus fou :
strlen(explode(',',$Coord_H)[0]); sort 6
return substr (explode(',',$Coord_H)[0], 0, 6); sort 45.5698592,1.9535183
return substr (explode(',',$Coord_H)[0], 0, 5); sort #3267
return substr (explode(',',$Coord_H)[0], 0, 3); sort #32






