Quellcode lesen, auftretende Fragen

Steusi

Nasenbär
Hallo ich lese mir gerade viel Quellcode um Templatesystem, OOP mit PHP etc zu verstehen ist manchmal besser als ein Buch zu lesen, weil man es selbst erkennt :p

So jetzt habe ich eine Funktion, welche ich nicht verstehe:

intval() Also konvertierung in einen Integer.

Ich habe den Quellcode einmal auf das Notwendigste gekürzt:

PHP:
echo("<form action=\"tests.php?step=1\" method=\"post\">");
echo("<input type=\"submit\" class=\"buttons\" name=\"submit\" value=\"weiter\">");
echo("</form>");

 if(isset($_REQUEST['step'])) $step=intval($_REQUEST['step']);
   else $step=0;  

if($step == 0) {
	echo "hallo";
} else {
	var_dump($step);
}


$tt = intval("tests.php?step=1");
var_dump($tt);
$step ist 1, wenn man auf den Button klickt. Würde folgendes stehen, ist $step 2
PHP:
<form action=\"tests.php?step=1\" method=\"post\">
usw....

Ich kann es mir nur leider nicht selbst erklären, da meine Hilfvariable $tt nur int(0) ausgibt, auch im Netz finde ich nicht das passende. Hoffe jemand erklärt es mir, DANKE

//edit:
Achso kann man wirklich Werte auslesen, wie in der action stehen?

PHP:
echo("<form action=\"tests.php?nase=24\" method=\"post\">");
echo("<input type=\"submit\" class=\"buttons\" name=\"submit\" value=\"weiter\">");
echo("</form>");

var_dump($_GET['nase']);
//ergibt 24
Ist ja wahnsinn, habe ich nicht gewusst, warum dann aber intval() ? Um auf nummer sicher zu gehen?

Intval() zu prüfen geht, aber dann braucht man auch immer ne Zahl, kann man eine Zahl aus einem String auslesen

PHP:
$a = "5bar";
settype($a,"integer");
var_dump($a);
// $a = 5
PHP:
$a = "bar5";
settype($a,"integer");
var_dump($a);
// $a = 0
 
Zuletzt bearbeitet:
Ein Blick in die Doku verrät:

Strings will most likely return 0 although this depends on the leftmost characters of the string.

Und siehe da, wenn man mal:

PHP:
var_dump(intval("5test.php?step=1"));

macht, kommt int(5) raus.

An dieser Stelle intval() zu benutzen ist mir auch noch nicht über den Weg gelaufen.. um sicher zu gehen, dass da wirklich eine Zahl drin steht, könnte man zum Beispiel so überprüfen:

PHP:
if (preg_match("/[0-9]+/", $_GET["step"])) {
    $step = $_GET["step"];
}
 
Klar keine Angst die Seite habe ich zuerst gelesen und Bücher hab ich auch im Regal stehen und die Übungen werden natürlich mit gemacht, aber ab und zu ist es gut wenn man mal einen komplexen Code hat und sich durchackert und die sache für sich kommentiert, dann hat man schon mal ein schönes Beispiel, falls man ein ähnliches Problem lösen möchte.
 
Zurück