Jump to content
sandrinoo

Modification fonction substr

Rate this topic

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.


Share this post


Link to post
Share on other sites

Salut,


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



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

Share this post


Link to post
Share on other 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'
?>

Share this post


Link to post
Share on other 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 ?

Share this post


Link to post
Share on other 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"?


Share this post


Link to post
Share on other 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...


Share this post


Link to post
Share on other sites

<?php

$string = 'abcdef';

$var = -7;

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

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

else

echo "";

?>

Share this post


Link to post
Share on other sites

Un retour ? Est-ce que cela résout ton problème?


Share this post


Link to post
Share on other 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 ?


Edited by sandrinoo

Share this post


Link to post
Share on other 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


Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...