- Code: Select all
<html>
<head>
</head>
<body>
<?php
$TabellenFeldinhalt = "<tra<lala>>";
echo bin2hex ($TabellenFeldinhalt) . "<br>";//Test
$meldelt = 0;
$posilt = strpos ($TabellenFeldinhalt, "<");
echo "Lauf 1a: posilt = ".$posilt."<br>";//Test
while (($posilt != FALSE) && (0 <= $posilt))//<--while reagiert fehlerhaft
{
$meldelt = 1;
$teil1 = substr($TabellenFeldinhalt, 0, $posilt);
$teil2 = "<";
$teil3 = substr($TabellenFeldinhalt, $posilt + 1);
$TabellenFeldinhalt = $teil1 . $teil2 . $teil3;
$posilt = strpos ($TabellenFeldinhalt, "<");
echo "Lauf 1b: posilt = ".$posilt."<br>";//Test
}
echo "Lauf 1c: meldelt = ".$meldelt."<br>";//Test
$meldegt = 0;
$posigt = strpos ($TabellenFeldinhalt, ">");
echo "Lauf 2a: posigt = ".$posigt."<br>";//Test
while (($posigt != FALSE) && (0 <= $posigt))//<--while reagiert richtig
{
$meldegt = 1;
$teil1 = substr($TabellenFeldinhalt, 0, $posigt);
$teil2 = ">";
$teil3 = substr($TabellenFeldinhalt, $posigt + 1);
$TabellenFeldinhalt = $teil1 . $teil2 . $teil3;
$posigt = strpos ($TabellenFeldinhalt, ">");
echo "Lauf 2b: posigt = ".$posigt."<br>";//Test
}
echo "Lauf 2c: meldegt = ".$meldegt."<br>";//Test
echo bin2hex ($TabellenFeldinhalt) . "<br>";//Test
/* Ergibt folgende Bildschirmanzeige:
3c7472613c6c616c613e3e
Lauf 1a: posilt = 0
Lauf 1c: meldelt = 0
Lauf 2a: posigt = 9
Lauf 2b: posigt = 13
Lauf 2b: posigt =
Lauf 2c: meldegt = 1
3c7472613c6c616c612667743b2667743b
*/
?>
</body>
</html>
Wenn die Meldung erscheint: "Lauf 1a: posilt = 0", ist die Bedingung für die erste while-Schleife erfüllt und diese Schleife müßte normalerweise mindestens ein Mal durchlaufen werden. Es müßte dann mindestens eine Meldung mit "Lauf 1b: posilt ..." erscheinen und anschließend: "Lauf 1c: meldelt = 1". Tatsächlich sieht es aber so aus, daß die Schleife kein einziges Mal durchlaufen wird. Kann es sein, daß mein PHP-Interpreter fehlerhaft ist?