Hallo zusammen,
Ich hoffe jemand kennt das Problem oder zumindest die Lösung :
Ziel ist ein PHP-Skript (eingebunden in HTML), welches einen Text aus einem Eingabefeld empfängt, in ein array umwandelt und Wert für Wert mit einem alternativen Alphabet ersetzt. Schließlich wird alles via implode wieder zum string, der in einer Textdatei abgespeichert wird. Übliche Ersetzungsfunktionen habe ich von Anfang an ausgeklammert, da sie stets alle Werte innerhalb eines arrays ersetzen und damit bereits ersetzte Werte nochmals ersetzt werden könnten. Ich habe versucht, mit einer foreach-Schleife mein Text-array zu durchlaufen, jeweils den anvisierten Wert in einem Standartalphabet (ist auch ein array) zu suchen. Der Zielcursor liegt dann im Standartalphabet auf einem Index (0, 1, 2, etc.). Man sucht unter dem selben Index in der eigentlichen Verschlüsselung (array mit genau so vielen Werten wie das Standartalphabet) den neuen Wert. Dieser ersetzt den alten im Text-array.
Die Browser-Ausgabe des momentan noch fehlerhaften Skriptes ist eine leere Seite.
Mein Problem ist anscheinend die foreach-Schleife, denn ein Eliminieren der darin enthaltenden if-else-Bedingungen (also ein Vereinfachen) hat scheinbar nichts verändert. Ein vollständiges Entfernen der foreach-Schleife hat darüber hinaus gezeigt, dass sie jedwede Browser-Ausgabe des php-Skriptes verhindert. Ohne sie wird der Rest durchgeführt/angezeigt, mit ihr eben nicht. Vielleicht hat jemand von Euch einen Blick dafür, ob ich etwas bei der Verwendung der Schleife noch grundsätzlich falsch mache oder ob irgendwo kleinere Fehler alles blockieren.
Vielen Dank für Eure Antworten!
Das folgende Skript ist nur ein Aussschnitt und enthält eine Vielzahl von Kommentaren, die hoffentlich zum Verständnis beitragen:
// eingegebener Text wird in einzelne Zeichen zum array gesplittet
$arrText = str_split ( $Text );
// Testwiedergabe vom unbehandelten Text-array in array-Form
print_r( $arrText );
// Text-array wird schrittweise durchlaufen und der Wert des aktuellen Elements jeweils behandelt -- startet automatisch beim ersten Element
foreach ($arrText as &$value)
{
// Testnachricht, ob überhaupt mal was beginnt ...
//echo ".";
$AbgleichText = array_search ($value, $arrAlph);
if ( $AbgleichText = FALSE )
{
echo "<font color="red">$value</font>";
}
else
{
// Testnachricht, ob if überhaupt mal beginnt ...
//echo ".";
// an welchem Schlüssel befindet sich der array-Zeiger im Alphabet-array?
$ZeigerAlph = key ($arrAlph);
// Ersetzen des aktuell behandelten Werts durch Äquivalent des Verschlüsselungs-arrays
$value = $arrCode[$ZeigerAlph];
echo "<font color="green">$value</font>";
reset ( $arrAlph );
}
}
$ReText = implode ("", $arrText);
Alles anzeigen