.txt auslesen sonderzeichen

roy15

Mitglied
Hallo,

eine .txt lese ich immer so aus:
PHP:
$file = "text.txt";	
$vars = parse_ini_file($file);
$text1 = $vars['text1'];
$text2 = $vars['text2'];

die .txt so:
PHP:
text1 = hallo
text2 = hallo du!

jetzt habe ich wie hier in text2 ein "!"
und schon bekomme ich eine Fehlermeldung,
wie bekomme ich das hin das die Sonderzeichen auch ausgelesen werden ?
 
ok danke das geht,

aber jetzt muss ein User selber das "!" schreiben
und was ja keiner macht,

frage: könnte man das anders auslesen ?
oder wie könnte ich das so speichern das er automatisch die Sonderzeichen in "" macht ?
 
so ca.

PHP:
$tex1 = "hallo";
$tex2 = "hallo2!";

$send=
"text1 = $tex1 \n".
"text2 = $tex2 \n";  


 $file = "text.txt"; 	

 $fp = fOpen($file,"w+");
 fPuts($fp, "$send");
 fClose ($fp);
 
Dann versuch doch mal so:

PHP:
$send=
"text1 = \"$tex1\" \n".
"text2 = \"$tex2\" \n";

Möglicherweise funktioniert es auch mit Single- statt Double-Quotes, dann sähe der Code auch etwas schöner aus:

PHP:
$send=
"text1 = '$tex1' \n".
"text2 = '$tex2' \n";
 
Außerdem müsstest du auch die Doublequotes escapen, sofern sie der User eingibt:
PHP:
$tex1 = str_replace('"', "\"", $tex1);

Aber nur, wenn die Einstellung magic_quotes_gpc ausgeschaltet ist. Dann kannst du auch einfach die Funktion addslashes() verwenden. Vorher also noch die Funktion get_magic_quotes_gpc() zum prüfen verwenden und im Falle von Rückgabe 0 entweder ComFreek's Code oder addslashes() anwenden.
 
Da magic_quotes_gpc seit PHP 5.3.0 als deprecated und seit PHP 5.4 entfernt worden sind, sollte (müsste) man dies nur prüfen, falls man wirklich ältere Systeme erwartet.
Man kann ja z.B. bei der Installation den Benutzer das System gar nicht installieren lassen, wenn er noch PHP 5.2 benutzt.

Ansonsten dachte ich eben auch an [phpf]addslashes[/phpf], allerdings weiß ich nicht, wie die INI-Lese-Funktion [phpf]parse_ini_file[/phpf] damit zurecht kommt.
Sprich, ob sie die anderen maskierten Zeichen (Single Quote, Backslash, NUL) wieder zurückwandelt.

Ich würde evtl. die NUL-Zeichen sowieso aus Sicherheitsgründen entfernen, vielleicht arbeitet man später mit den Daten mit irgendeiner nicht binary-safe-Funktion.
PHP:
// str_replace() ist binary-safe!
$text = str_replace("\0", "", $text);
 
danke saftmeister,

habe das jetzt so:
PHP:
$send=
"text1 = \"$tex1\" \n".
"text2 = \"$tex2\" \n";
und geht wie gewollt,

den Rest habe ich mir auch angeschaut und wieder was dazu gelernt,

und ich danke euch noch mal,
 
Zurück