ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
304
304
EMPFEHLEN
-
Hallo zusammen,
vor lauter Bäume sehe ich den Wald nicht mehr. Ich versuche gerade verzweifelt ein kleine
Funktion zu schreiben die eine Textdatei zerlegt und mir diese in einem Array zurückgibt:
Inhalt der Datei:
<1>Ebene1</1>
Freitext Freitext Freitext
Freitext Freitext Freitext
Freitext Freitext Freitext
Freitext Freitext Freitext
Freitext Freitext Freitext
<2>Ebene2</2>
Freitext Freitext Freitext
Freitext Freitext Freitext
Freitext Freitext Freitext
<3>Ebene2</3>
Freitext Freitext Freitext
Freitext Freitext Freitext
Freitext Freitext Freitext
<1>Ebene1</1>
Freitext Freitext Freitext
Freitext Freitext Freitext
Freitext Freitext Freitext
Freitext Freitext Freitext
Freitext Freitext Freitext
<2>Ebene2</2>
Freitext Freitext Freitext
Freitext Freitext Freitext
Freitext Freitext Freitext
<3>Ebene2</3>
Freitext Freitext Freitext
Freitext Freitext Freitext
Freitext Freitext Freitext
Der Array, den ich versuche zu bauen:
Array [0]
[1] => Ebene 1
[2] => Der Freitext
[1]=>Ebene 2
[2] => Der Freitext
usw.
Ich hoffe ich könnt mir helfen.
Vielen Dank.
IGFAS
-
Zerlege einfach den Inhalt in Zeilen und prüfe den Anfang jeder Zeile auf die entsprechenden Merkmale.
Markus Wulftange
-
Der Vollständigkeitshalber:
Für diesen Erguss habe ich nun 4h gebraucht... es gibt Tage da bring der beste Kaffee auch nix... wenn man total verpeilt ist. Es gibt sicherlich auch einfachere Möglichkeiten!
Grüsse
Alexander
Textdatei:
<point>
<name>X1</name>
<level>1</level>
<create>11.12.1983</create>
<change>25.02.2005</change>
<editabel>true</editabel>
<content>
sadf ksadlf k12132#a
asdfa sdf5asd4f87jsa df
</content>
</point>
<point>
<name>X2</name>
<level>2</level>
<create>11.12.1983</create>
<change>25.02.2005</change>
<editabel>true</editabel>
<content>
sadf ksadlf kjsa d
asdfas df4156fsad fasdf asdf
</content>
</point>
<point>
<name>X3</name>
<level>3</level>
<create>11.12.1983</create>
<change>25.02.2005</change>
<editabel>true</editabel>
<content>
sadf ksadlf kjsa df
sadfasd fas dfasd fasdf
sad fasdf
</content>
</point>
<point>
<name>X2</name>
<level>2</level>
<create>11.12.1983</create>
<change>25.02.2005</change>
<editabel>true</editabel>
<content>
sadf ksadasdf asdfl
asdfasdf f kjsa df
</content>
</point>
der PHP Code:
Ausgabe:PHP-Code:$content_file='./content/content.htm';
function mkpoints($_file){
function getcontent($conten_file){
$openfile = fopen($conten_file, "r");
$rtn_array=array();
$rtn_string;
if($openfile){
$counter = 0;
while(!feof($openfile)){
$read=fgets($openfile, 10000);
array_push($rtn_array,trim($read));
$rtn_string=$rtn_string.trim($read);
$counter++;
}
fclose($openfile);
}
return array($rtn_array,$rtn_string);
}
function readxml($data){
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);
$params = array();
$level = array();
foreach ($vals as $xml_elem) {
if ($xml_elem['type'] == 'open') {
if (array_key_exists('attributes',$xml_elem)) {
list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
} else {
$level[$xml_elem['level']] = $xml_elem['tag'];
}
}
if ($xml_elem['type'] == 'complete') {
$start_level = 1;
$php_stmt = '$params';
while($start_level < $xml_elem['level']) {
$php_stmt .= '[$level['.$start_level.']]';
$start_level++;
}
$php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
eval($php_stmt);
}
}
return $params;
}
$output=array();
$_cto=getcontent($_file);
$xml_stacks=explode('<point>',$_cto[1]);
for($r=0;$r<count($xml_stacks);$r++){
$xml_payload=explode('</point>',$xml_stacks[$r]);
$xml_stack=readxml('<point>'.$xml_payload[0].'</point>');
array_push($output,$xml_stack);
}
return $output;
}
$rtn=mkpoints($content_file);
print_r($rtn);
HTML-Code:Array ( [0] => Array ( [POINT] => ) [1] => Array ( [POINT] => Array ( [NAME] => X1 [LEVEL] => 1 [CREATE] => 11.12.1983 [CHANGE] => 25.02.2005 [EDITABEL] => true [CONTENT] => sadf ksadlf k12132#aasdfa sdf5asd4f87jsa df ) ) [2] => Array ( [POINT] => Array ( [NAME] => X2 [LEVEL] => 2 [CREATE] => 11.12.1983 [CHANGE] => 25.02.2005 [EDITABEL] => true [CONTENT] => sadf ksadlf kjsa dasdfas df4156fsad fasdf asdf ) ) [3] => Array ( [POINT] => Array ( [NAME] => X3 [LEVEL] => 3 [CREATE] => 11.12.1983 [CHANGE] => 25.02.2005 [EDITABEL] => true [CONTENT] => sadf ksadlf kjsa dfsadfasd fas dfasd fasdfsad fasdf ) ) [4] => Array ( [POINT] => Array ( [NAME] => X2 [LEVEL] => 2 [CREATE] => 11.12.1983 [CHANGE] => 25.02.2005 [EDITABEL] => true [CONTENT] => sadf ksadasdf asdflasdfasdf f kjsa df ) ) }
Ähnliche Themen
-
C++ Int zerlegen
Von Shadow1911 im Forum C/C++Antworten: 21Letzter Beitrag: 25.08.10, 20:23 -
auslesen einer textdatei und in eine neue textdatei schreiben
Von prinzessin4444 im Forum C/C++Antworten: 3Letzter Beitrag: 10.12.08, 12:01 -
Textdatei in neue Textdatei schreiben
Von YukiNoHana im Forum PHPAntworten: 15Letzter Beitrag: 07.09.08, 17:43 -
CSV - Zerlegen
Von Raven280438 im Forum PHPAntworten: 5Letzter Beitrag: 04.12.07, 08:59 -
C# INI zerlegen
Von toko84 im Forum .NET CaféAntworten: 5Letzter Beitrag: 16.05.07, 10:32





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren