Aller au contenu
sandrinoo

Modification fonction substr

Noter ce sujet :

Recommended Posts

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.


Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,


Pourquoi ne pas utiliser la fonction stristr qui fera ca en te renvoyant juste un booléen ?



if (stristr('abcdef', -100) === false)...

Partager ce message


Lien à poster
Partager sur d’autres sites

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'
?>

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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"?


Partager ce message


Lien à poster
Partager sur d’autres sites

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...


Partager ce message


Lien à poster
Partager sur d’autres sites

<?php

$string = 'abcdef';

$var = -7;

if(abs($var) <= strlen($string)+1)

echo substr(strrev($string), abs($var)-1, 1);

else

echo "";

?>

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par sandrinoo

Partager ce message


Lien à poster
Partager sur d’autres sites

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


Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×