
12.09.2005, 14:27
|
|
|
Banned
Регистрация: Sep 2001
Сообщений: 6,162
|
wo!
rabotaet no pochemuto "obresaet" text w poslednem uzle
Цитата:
<pre>
<?php
$file = 'n1840411966.txt';
$stack = array();
function startTag($parser, $name, $attrs)
{
global $stack;
$tag=array("name"=>$name,"attrs"=>$attrs);
array_push($stack,$tag);
}
function cdata($parser, $cdata)
{
global $stack,$i;
if(trim($cdata))
{
$stack[count($stack)-1]['cdata']=$cdata;
}
}
function endTag($parser, $name)
{
global $stack;
$stack[count($stack)-2]['child'][] = $stack[count($stack)-1];
array_pop($stack);
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startTag", "endTag");
xml_set_character_data_handler($xml_parser, "cdata");
//
function htmlentitydecode($string) {
$trans_tbl = get_html_translation_table(HTML_ENTITIES);// HTML_SPECIALCHARS
$trans_tbl = array_flip ($trans_tbl);
return strtr ($string, $trans_tbl);
}
$data = file_get_contents($file);
$data= str_replace('<A',' a_tag_auf ',$data);
$data= str_replace('</A>',' a_tag_zu ',$data);
$data= str_replace('
',' ### ',$data);
//$data= str_replace('"'," doppelte_anfuehrunszeichen ",$data);
$data = htmlentitydecode($data);
$allow = "<news><id><storyid><pubdate><enddate><language><company><branch><wkn><isin><fair><category><related><title><teaser><author><media><text><artem>";
$data = strip_tags($data, $allow);
$data= str_replace('&',' undzeichen ',$data);
//
$end = xml_parse($xml_parser,$data);
//$data = xml_parse($xml_parser,file_get_contents($file));
if(!$end) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
xml_parser_free($xml_parser);
//print_r($stack[0][name]);
//print_r($stack);
for ($i=0;$i<sizeof($stack[0][child]);$i++){
echo $stack[0][child][$i][name]."\n<br>".$stack[0][child][$i][cdata]."<br><br><br>\n";
}
?>
</pre>
|
|