Сообщение от
avt
В принципе, дело хорошее, но есть проблема.
Если на странице больше одной ссылке, в xml отдается только по одной.
у меня отдается столько сколько есть!!! вот я написал даже небольшую утилитку, может кому пригодится: http://tradskin.ru/linkfeed/
PHP код:
<?php
function get_url_file( $url, $host )
{
@$so = fsockopen($host, 80, &$errno, &$errstr, 5);
fputs($so,"GET $url HTTP/1.0\nHOST: $host\n\n");
while(fgets($so,2048)!="\r\n" && !feof($so));
unset($buf);
while(!feof($so)) $buf.=fread($so,2048);
fclose($so);
return $buf;
}
function xml_to_array( $file )
{
$parser = xml_parser_create();
xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 );
xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 );
xml_parse_into_struct( $parser, $file, $tags );
xml_parser_free( $parser );
$elements = array();
$stack = array();
foreach ( $tags as $tag )
{
$index = count( $elements );
if ( $tag['type'] == "complete" || $tag['type'] == "open" )
{
$elements[$index] = array();
$elements[$index]['name'] = $tag['tag'];
$elements[$index]['attributes'] = $tag['attributes'];
$elements[$index]['content'] = $tag['value'];
if ( $tag['type'] == "open" )
{ # push
$elements[$index]['children'] = array();
$stack[count($stack)] = &$elements;
$elements = &$elements[$index]['children'];
}
}
if ( $tag['type'] == "close" )
{ # pop
$elements = &$stack[count($stack) - 1];
unset($stack[count($stack) - 1]);
}
}
return $elements[0];
}
?>
<html><body>
<?php
if(!isset($_GET['site']) || !isset($_GET['user']))
{
?>
<center>
<h2>Анализатор для биржы LinkFeed</h2>
<FORM ACTION="index.php" METHOD="GET">
<table align="center" border="0">
<tr>
<td><b>Ваш сайт:</b> </td>
<td><INPUT TYPE="text" name="site" SIZE="30" MAXLENGTH="60"></td>
</tr>
<tr>
<td><b>Идентификатор:</b> </td>
<td><INPUT TYPE="text" name="user" SIZE="30" MAXLENGTH="60"></td>
</tr>
<tr>
<td colspan="2" align="left"><INPUT TYPE="submit" VALUE="Go!"></td>
</tr>
</table>
</FORM>
</center>
<?php
}
else
{
?>
<!--<pre>-->
<?php
$site = $_GET['site'];
$linkfeed_user = $_GET['user'];
$host = 'db.linkfeed.ru';
//$url = "/server/?user=$linkfeed_user&host=$site&charset=utf-8&uri=".$_SERVER['REQUEST_URI'];
$url = "http://db.linkfeed.ru/$linkfeed_user/$site/UTF-8.xml";
$arr = xml_to_array( get_url_file( $url, $host ) );
$pages = $arr[children][2][children];
$links = array();
foreach ($pages as $value) {
$link = array();
foreach ($value[children] as $data) {
if($data[name] == level) continue;
$link[] = $data[content];
}
$links[$value[attributes][url]] = $link;
}
//print_r($links);
echo "<b>$url:</b><br/>";
echo '<table border = "1">';
$i = 0;
$links_url = "http://".$host."/server/?user=$linkfeed_user&host=$site&charset=utf-8&uri=";
foreach ($links as $key => $value) {
$i++;
echo "<tr><td>$i</td><td>$key</td><td>\n";
foreach ($value as $data) {
echo "$data • \n";
}
echo "</td><td>\n";
echo '<IFRAME WIDTH="500" HEIGHT="40" ALIGN="MIDDLE" SRC="'.$links_url.$key.'" SCROLLING="auto">Error!</IFRAME>';
echo "<td></tr>\n";
}
echo '</table>';
?>
<!--</pre>-->
<?php
}
?>
</body></html>