23 $fp = fopen(
$file,
"r-");
24 while ($line=fgets($fp))
27 if (preg_match(
'/<!DOCTYPE NETSCAPE-Bookmark-file-1>/i', $line)) {
47 while ($line=fgets($fp))
50 if (preg_match(
'/<DL>/i',$line))
54 elseif (preg_match(
'/<\/DL>/i',$line))
56 $parent_id=array_pop($parent);
58 elseif (preg_match(
'/<DD>(.+)$/i',$line,$match))
63 $result[$parent_id][$id][
'description']=strip_tags($desc);
65 elseif (preg_match(
'/<DT><H3[^>]*>(.*)<\/H3>/i',$line,$match))
68 array_push($parent,$parent_id);
74 'title'=>strip_tags($name),
77 elseif (preg_match(
'/<DT><A HREF="([^"]*)[^>]*>(.*)<\/A>/i', $line, $match))
86 if (preg_match(
"/ADD_DATE=\"([^\"]*)/i", $line, $match)) $add_date = $match[1];
else $add_date=0;
87 if (preg_match(
"/LAST_VISIT=\"([^\"]*)/i", $line, $match)) $visited = $match[1];
else $visited=0;
88 if (preg_match(
"/LAST_MODIFIED=\"([^\"]*)/i", $line, $match)) $modified = $match[1];
else $modified=0;
91 'target'=>strip_tags($url),
92 'title'=>strip_tags($name),
93 'add_date'=>$add_date,
95 'modified'=>$modified,
98 elseif (preg_match(
"/<META\s+HTTP-EQUIV=\"Content-Type\".+CONTENT=\"([^\"]*)\"/i", $line, $match))
100 preg_match(
"/charset=([^ ]+)/", $match[1], $match);
115 $htmlCont=
'<!DOCTYPE NETSCAPE-Bookmark-file-1>'.
"\n";
116 $htmlCont.=
'<!-- Created by ilias - www.ilias.de -->'.
"\n";
117 $htmlCont.=
'<!-- on '.date(
'r').
' -->'.
"\n\n";
118 $htmlCont.=
'<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">'.
"\n";
119 $htmlCont.=
'<TITLE>'.ilUtil::prepareFormOutput(
$title).
'</TITLE>'.
"\n";
120 $htmlCont.=
'<H1>'.ilUtil::prepareFormOutput(
$title).
'</H1>'.
"\n\n";
121 $htmlCont.=
'<DL><p>'.
"\n";
122 foreach ($obj_ids as $obj_id) {
126 $htmlCont.=
'</DL><p>'.
"\n";
140 switch ($object[
'type'])
143 $result.=str_repeat(
"\t",$depth);
144 $result.=
'<DT><A HREF="'.ilUtil::prepareFormOutput($object[
'target']).
'" ';
145 $result.=
'ADD_DATE="'.intval(0).
'" ';
146 $result.=
'LAST_VISIT="'.intval(0).
'" ';
147 $result.=
'LAST_MODIFIED="'.intval(0).
'">';
149 if ($object[
'description'])
$result.=
'<DD>'.
153 $result.=str_repeat(
"\t",$depth).
'<DT><H3 ADD_DATE="0">'.
155 if ($object[
'description'])
$result.=
'<DD>'.
157 $result.=str_repeat(
"\t",$depth).
'<DL><p>'.
"\n";
162 foreach ($sub_objects as $sub_object)
169 $result.=str_repeat(
"\t",$depth).
'</DL><p>'.
"\n";
182 if (function_exists(
'html_entity_decode'))
184 $string= html_entity_decode($string,ENT_QUOTES,
"ISO-8859-15"); #NOTE: UTF-8 does not work!
188 $trans_table = array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES));
189 $string = strtr($string, $trans_table );
191 $string= preg_replace(
'/&#(\d+);/me',
"chr(\\1)",$string); #decimal notation
192 $string= preg_replace(
'/&#x([a-f0-9]+);/mei',
"chr(0x\\1)",$string); #hex notation
205 if (extension_loaded(
"mbstring"))
210 mb_detect_order(
"ASCII, JIS, UTF-8, EUC-JP, SJIS, ISO-8859-15, Windows-1252");
211 $from_charset=mb_detect_encoding ($string);
213 if (strtoupper($from_charset)!=$to_charset)
215 return @mb_convert_encoding($string,$to_charset,$from_charset);