sandrinoo Posté 26 Octobre 2015 Posté 26 Octobre 2015 Bonjour à toutes et à tous, Un truc tout bête, j'ai besoin, pour des raisons pratiques que : echo substr('abcdef', -100, 1); me retourne une variable vide et non "a" (d'ailleurs c'est plutôt logique non ?) Y-a-t-il un moyen ? Si vous aviez la réponse, ça serait chouette... sand.
BlackPage Posté 26 Octobre 2015 Posté 26 Octobre 2015 Salut, Pourquoi ne pas utiliser la fonction stristr qui fera ca en te renvoyant juste un booléen ? if (stristr('abcdef', -100) === false)...
sandrinoo Posté 26 Octobre 2015 Auteur Posté 26 Octobre 2015 Merci pour ta réponse Blackpage mais je comprends pas comment utiliser ta solution avec mon cas...
Portekoi Posté 26 Octobre 2015 Posté 26 Octobre 2015 Bonjour, Désolé mais en posant cette question, cela montre que ton code est un peu "bancal". Quel intérêt de retourner vide en tronquant une chaine? Autant renvoyer vide tout de suite. <?php // Conditions pour que l'on prenne - 100? $st = -100; echo ($st == -100)? "" : substr('abcdef', 1, 1); //Si $st = -100 alors on affiche vide, sinon on affiche 'a' ?>
sandrinoo Posté 26 Octobre 2015 Auteur Posté 26 Octobre 2015 Salut Portekoi, Merci de t'intéresser à mon cas. En fait 'abcdef' est une variable qui peut aller de 0 à 100 caractères et -100 aussi est une variable qui peut aller de -1 à -100 et si par exemple la première variable fait 5 caractères et que la deuxième fait -100 : echo substr('abcdef', -100, 1); je ne veux pas que cela me sorte un "a" mais un vide. Un "a" sera réservé uniquement pour cette ligne de code : echo substr('abcdef', -5, 1); Ca me paraissait simple au départ. J'ai l'impression que je saisis pas bien ce que tu veux me dire ?
Portekoi Posté 26 Octobre 2015 Posté 26 Octobre 2015 Si ta seconde variable est toujours négative, tu veux renvoyer quoi comme valeur? Si $variable_2 = -1, que veux tu afficher? echo substr('abcdef', -1, 1); ==> "vide"?
sandrinoo Posté 26 Octobre 2015 Auteur Posté 26 Octobre 2015 et bien echo substr('abcdef', -1, 1); ==> "f" bien sûr et echo substr('abcdef', -2, 1); ==> "e" et echo substr('abcdef', -3, 1); ==> "d" et echo substr('abcdef', -4, 1); ==> "c" et echo substr('abcdef', -5, 1); ==> "b" et echo substr('abcdef', -6, 1); ==> "a" et echo substr('abcdef', -7, 1); ==> "" et echo substr('abcdef', -8, 1); ==> "" ainsi de suite...
Portekoi Posté 26 Octobre 2015 Posté 26 Octobre 2015 <?php $string = 'abcdef'; $var = -7; if(abs($var) <= strlen($string)+1) echo substr(strrev($string), abs($var)-1, 1); else echo ""; ?>
Portekoi Posté 26 Octobre 2015 Posté 26 Octobre 2015 Un retour ? Est-ce que cela résout ton problème?
sandrinoo Posté 26 Octobre 2015 Auteur Posté 26 Octobre 2015 (modifié) Désolée Portekoi pour le retard du retour... Oui c'est exactement ça Portekoi ! Merci. Juste une remarque à titre d'information, pourquoi quand on met une valeur dans le else echo (final) dans le cas d'une $var=-7 ça n'affiche pas la valeur ? Modifié 26 Octobre 2015 par sandrinoo
Portekoi Posté 26 Octobre 2015 Posté 26 Octobre 2015 Parce que ta chaine en entrée 'abcdef' fait 6 positions. Du coup, le test est : Si 7 <= 6 alors tu fais le substr sinon tu n'affiches rien. Fin Si
sandrinoo Posté 26 Octobre 2015 Auteur Posté 26 Octobre 2015 Oui c'est logique. Merci encore (comme toujours) pour ton aide précieuse Portekoi... Bonne soirée,
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant