Thema anzeigen : parse_ini_file -> keine Hochkommata?
mix
moin,
hab ne frage zu parse_ini_file.. es geht anscheinend nicht, dass man in einer ini value ein escaptes " hat.. oder gibts da nen workaround?
also z.B
foo = "<div class=\"bla\">bla"
geht nicht?
gruss mix
fmj
also entweder ist dein beispiel schlecht, oder du versuchst eine ini im xml format zu lesen?! was ist genau das problem?
mix
hab ein file (language ist da drin) und das ist ein ini file wo's eben auch (x)html drin hat..wenn ich nun aber mit parse_ini_file das file einlesen will, dann gibts mir dort einen fehler wo ich ein double-quote innerhalb einer value hab.. also eben wie in meinem beispiel foo = "<div class=\"bla\">bla</div>" .. und wenn ich nun das file mit $foo = parse_ini_file('foo.ini'); einlese und mit echo $foo['foo']; die ini value ausgeben will, gibts nur <div class=\ aus ...
fmj
ini values müssen meines wissens nicht mit " eingekapselt werden
mix
ini values müssen meines wissens nicht mit " eingekapselt werden
jo das stimmt, das gleiche passiert jedoch wenn ich foo = <div class=\"bla\">bla</div> mache oder foo = <div class="bla">bla</div>
..
fmj
Scheint ein allgemein bekanntes Problem zu sein. Siehe comments: http://php.net/manual/de/function.parse-ini-file.php
mix
hmm ja stimmt .. grml :( ich könnts auch mit single quotes machen .. aber das ist auch doof irgendwie. .
fmj
mach doch ne xml config und schreib oder benutz nen xml reader
mix
mh ne dann gehen html tags auch nicht weil sie dann als xml tag interpretiert werden ...
könnte höchstens < und > gebrauchen anstatt < und > aber das is auch doof..
fmj
neee...
<tag>
<![CDATA[
<div id="bla">Text</div>
]]>
</tag>
mix
hab mir jetztn eigenes parseIni aus den comments gebastelt.. perfekt für meine Languageklasse.
// Edit: hab jetzt unterstützung für optionales parsen der sections eingebaut
/*
* parseIni - parses an Ini file specified with $filename
* into an array. If $parseSections is true, sections will
* also parsed ->multdimensional array
*/
function parseIni ($filename, $parseSections=false) {
$array1 = file($filename);
$section = '';
foreach ($array1 as $filedata) {
$dataline = trim($filedata);
$firstchar = substr($dataline, 0, 1);
$lastchar = substr($dataline, -1, 1);
if ($firstchar != ';' && $dataline != '') {
// no commment,no blank line
if ($firstchar == '[' && $lastchar == ']' && $parseSections) {
// it's a section
$section = substr($dataline, 1, -1);
}
else {
//It's an key
$delimiter = strpos($dataline, '=');
if ($delimiter > 0) {
//...with a value
$key = trim(substr($dataline, 0, $delimiter));
$value = trim(substr($dataline, $delimiter + 1));
if (substr($value, 0, 1) == '"' && substr($value, -1, 1) == '"') {
$value = substr($value, 1, -1);
}
if ($parseSections) {
$array2[$section][$key] = stripcslashes($value);
}
else {
$array2[$key] = stripcslashes($value);
}
}
else {
//...without a value
if ($parseSections) {
$array2[$section][strtolower(trim($dataline))]='';
}
else {
$array2[strtolower(trim($dataline))]='';
}
}
}
}
}
return $array2;
}
vBulletin v3.0.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.