login  Naam:   Wachtwoord: 
Registreer je!
 Overzicht:
Overzicht > PHP > Strings > substr()

Gebruik:
string substr(str string,int start,int lengte);

Uitleg:

Substr geeft een gedeelte van string gespecificeerd door de start en lengte parameters. Als start 0 is begint hij te nemen vanaf het eerste karakter. Hij neemt het aantal karakters dat je aangeeft met de parameter lengte.




Voorbeeld:
<?php
//Voorbeelden met positieve getallen

$deel substr ("123456"1); //dit geeft 23456
$deel substr ("123456"13); //dit geeft 234
$deel substr ("123456"04); //dit geeft 1234
$deel substr ("123456"34); //dit geeft 45

//Voorbeelden met negatieve cijfers

$deel substr ("123456", -1); //dit geeft 6
$deel substr ("123456", -3); //dit geeft 456
$deel substr ("123456", -41); //dit geeft 3
?>

Bijdragen :
nemesiskoen
Als je per se wilt dat het een password van 12 tekens terug stuurt doe dan niet moeilijk en doe gewoon zo:

  1. function passwordGenerate()
  2. {
  3. $maxlength = 12;


Want die invoer is dan nergens en werkelijk nergens voor nodig.
leendert
Ik vind het niet een fout!

Het was voor eigen gebruik dus dat ik die extra controle er in had maakt opzich niet uit.
Ik wilde gewoon een 12 cijferig wachtwoord dus......

Hoe jij het nu hebt gedaan kan inderdaad ook, maar dat had ik niet nodig dus daarom heb ik dat er ook niet ingebouwd.
nemesiskoen
Werkende versie;)

  1. <?php
  2. function passwordGenerate($maxLength = 12)
  3. {
  4. $possible = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  5. $password = '';
  6. while($i < $maxLength) {
  7. $pass = substr($possible, mt_rand(0,strlen($possible)-1),1);
  8. if (!strstr($password, $pass)) {
  9. $password .= $pass;
  10. $i++;
  11. }
  12. if($i > 61) break;
  13. }
  14. return $password;
  15. }
  16. echo passwordGenerate(100); //62 tekens
  17. echo "<br />";
  18. echo passwordGenerate(); //12 tekens
  19. echo "<br />";
  20. echo passwordGenerate(40); //40 tekens
  21. ?>


Mja, daar heb je fouten voor he:). Om van te leren.
leendert
jaja , je hebt gelijk ;)

Ik had hem een poosje geleden gemaakt als password generator voor mezelf en ik wilde 12 tekens.

Het is zoals je zegt nutteloos omdat de doen maar ik had er zelf geen last van ;)
nemesiskoen
Ja
  1. function passwordGenerate($maxLength = 12)
  2. {
  3. if ($maxLength != 12) {
  4. $maxLength = 12;
  5. }

Dit... wat nog altijd nutteloze code is. Omdat je net zo goed kan zeggen $maxlength = 12.

  1. echo passwordGenerate(40);

Geeft een password van 12 tekens...

Waarom laat je de gebruiker dan überhaupt een parameter meegeven aan de functie?
leendert
ja en dat doe ik.
nemesiskoen
Hoeveel het er zijn doet er eigenlijk niet toe, het doet er toe dat je er iets tegen moet doen...
leendert
Wat denk je dat dit doet:
  1. passwordGenerate($maxLength = 12)


Ja dat weet ik wel ;) maar het is gewoon als extra ( opzich onnodige code ;))

Ja dat snap ik wel dat als je boven de 62 komt hij in een oneidige loop komt,

en het zijn 62 cijfers want de 0 telt ook mee.
nemesiskoen
Wat denk je dat dit doet:
  1. passwordGenerate($maxLength = 12)

Als er niets wordt meegegeven dan wordt de maxlength automatisch 12. Wordt er wel iets meegegeven dan is maxlength gelijk aan die lengte.
En dan ga jij ineens die lengte weer veranderen in 12:s
Als je een controle zou doen if(!is_numeric($maxelength)) $maxlength = 12; ofzoiets, maar wat jij doet... snap ik gewoon het nut niet van.

9 (9 cijfers) + 26 (grote letters) + 26 (kleine letters) = 61

Als je dit niet instelt kom je in een oneindige loop, want na dat alle tekens zijn geweest gaat strstr false terug sturen... en dan blijft de loop gaat.
leendert
@nemesiskoen

Ja het is idd overbodig maar voor het geval dat ik hem niet vul als parameter.

edit:

Hoezo een maxlength instellen van 61?
nemesiskoen
@leendert:
  1. function passwordGenerate($maxLength = 12)
  2. {
  3. if ($maxLength != 12) {
  4. $maxLength = 12;
  5. }


is toch hetzelfde als:
  1. function passwordGenerate() {
  2. $maxlength = 12;


Wat vrij dom is omdat de gebruiker van de functie geen ene inspraak heeft over de lengte van de string.
En stel dit zou wel zijn dan moet je een maximum lengte van de variabele maxlength instellen op 61 anders krijg je een onneindige loop.
leendert
kan handig zijn bij het genereren van het wachtwoord:


  1. <?php
  2. function passwordGenerate($maxLength = 12)
  3. {
  4. if ($maxLength != 12) {
  5. $maxLength = 12;
  6. }
  7. $possible = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  8. $password = '';
  9. while($i < $maxLength) {
  10. $pass = substr($possible, mt_rand(0,strlen($possible)-1),1);
  11. if (!strstr($password, $pass)) {
  12. $password .= $pass;
  13. $i++;
  14. }
  15. }
  16. return $password;
  17. }
  18. ?>


Zie ook de functies:
strstr()
mt_rand()
strlen()


 Overzicht
addslashes()
chop()
crypt()
echo()
htmlentities()
htmlspecialchars()
html_entity_decode()
md5()
nl2br()
number_format()
print()
stripslashes()
strip_tags()
strlen()
strpbrk()
strpos()
strrev()
strstr()
strtolower()
strtoupper()
str_repeat()
str_replace()
str_shuffle()
substr()
substr_count()
trim()
ucfirst()
ucwords()
wordwrap()



© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.097s