Взаимодействие построчного вывода к грабу страницы

RadLine

Новичок
Взаимодействие граба со страницы к построчному выводу из файла

Подскажите(исправьте), почему возникает ошибка, т.е. лагает система - происходит ош. в момент вывода для имени граба определённого момента сайта.
(Она заключается в том, что при выводе информации для второй строки = наружу вылезает лишнее.)
На примере(выводиться должен только опыт)

http://alliance.yard.ru/index.php?mod=sostav&action=list

PHP:
<? 
if($action == "list")
{echo'<table border=0 width=100%><tr>
	<td align=left width=14>&nbsp;</td>
	<td align=left>Ник</td>
	<td align=center>Опыт</td>
	<td align=right>Звание</td></tr>';
$all_users = file("mod/data/sostav.db.php");
$i = 1;
    foreach($all_users as $user_line)
	 {
	   $i++; $bg = "";
        if($i%2 == 0){ $bg = "bgcolor=\"\"";}
		if(!eregi("<\?",$user_line)){
		$user_arr = explode("|", $user_line);
$GrabURL = "http://darkagesworld.com/vr/common/FighterInfo.aspx?username=$user_arr[1]";
$GrabStart = 'Опыт:'; 
$GrabEnd = 'Уровень:';

$OpenFile = fopen("$GrabURL", "r");
while(!feof($OpenFile)){ 
$RetrieveFile .= fread($OpenFile, 20000); 
} 
$GrabData = eregi("$GrabStart(.*)$GrabEnd", $RetrieveFile, $DataPrint); 
$DataPrint[1] = str_replace('</span><BR>
							Уровень:
							<span id="lbLevel">', '&nbsp;[', $DataPrint[1]); 
fclose($OpenFile);
        echo"<tr><td align=left><img width=14 height=14 src=http://alliance.yard.ru/full/a.gif border=0></td>";
        echo"<td align=left>$user_arr[1]</td>";
        echo"<td align=center>$DataPrint[1]</td>";
		echo"<td align=right>$user_arr[2]</td></tr>";
        }
    }
	}
?>
-~{}~ 30.11.05 11:47:

Я знаю, что это гнилая тема, но всёже, кому не сложно...исправьте, плиз...
-Я покудого только начинающий....

-~{}~ 30.11.05 12:10:

кто-нит вообще знает что нуна сделать...если да, то можешь помочь...
 

RadLine

Новичок
???

а дизайн пока такой...оформляю не я.Мну облочку сделал
 

chisto_tolyan

Враг народа
что у тебя в этом скрипте не так как надо работает?и поменяй стили, а то белый шрифт на белом фоне немного не юзабильо)
 

RadLine

Новичок
что работает не так я и сам понимаю - я где-то пролетел так, что при грабе после его первой задачи он выдаёт весь граб страницы, а потом только переходит ко 2ой задаче.
 

RadLine

Новичок
это обращения к файлу mod/data/sostav.db.php
и использование $user_arr[1] в первой строке, потом во второй, третьей, четвёртой и т.д.
 

chisto_tolyan

Враг народа
ну так смотри что ты получаешь в $DataPrint. Я так понимаю хочешь получить значения уровень/опыт/звание?
сделай print_r($DataPrint); и смотри чего у тебя там лишнего.
 

RadLine

Новичок
???
что-то я не понял....
глянь по ссылке...(я внёс что ты просил и закинул на сервак)
http://alliance.yard.ru/index.php?mod=sostav&action=list

Мне нужно, чтобы выносился на страницу опыт для персонажей(для каждого в отдельности) из http://darkagesworld.com/vr/common/FighterInfo.aspx?username=$user_arr[1],
где $user_arr[1] это имена персов из файла mod/data/sostav.db.php

Вроде как всё норм, но при выводе опыта 1го перса,- происходит выдёргивание, а дольше идёт , почему-то, полная страница граба, и только потом выводиться опыт 2му персу.

Почему выводится полная страница граба?
 

chisto_tolyan

Враг народа
вот пример довольно кривой регулярки, которая по идее подходит под твою задачу)):
PHP:
preg_match("|<span id=\"lbExperience\">([^\"]*)</span\>([^\"]*)<span id=\"lbLevel\">([^\"]*)</span\>|iUs", $RetrieveFile, $DataPrint);

echo "Опыт:".$DataPrint[1]."<BR>";
echo "Уровень:".$DataPrint[3]."<BR>";
-~{}~ 30.11.05 13:12:

Почему выводится полная страница граба?
Ты посмотри в HTML Source своей странички и увидь, что у тебя в массиве)))после каждой ирретации цикла нуно чистить переменную $RetriveFile
 

RadLine

Новичок
А что следует дописать, чтобы её отчистить? ПАСИБ...я понял что к чему...Многово не знаю,- пока только учусь

-~{}~ 30.11.05 13:25:

В смысле что следует писать дабы отчистить переменную $RetriveFile
 

chisto_tolyan

Враг народа
в конце цикла $RetriveFile = '';
и убери eregi!зачем он те нужен, если дальше используется preg_match?
Почему выводиться только для первой линии - смотри что приходит из файла с пользователями
 

RadLine

Новичок
а по подробнее с примером можешь? а то....блин

-~{}~ 30.11.05 13:33:

а почему не очень?(по поводу днюхи)

-~{}~ 30.11.05 13:33:

разница -то в год и 2а дня

-~{}~ 30.11.05 13:34:

или ты про 8го :)
Так, это наоборот веселее :)
 

chisto_tolyan

Враг народа
RadLine
куда уж подробнее....
PHP:
foreach($all_users as $user_line){
  //тут всякая ерунда...
  //А вот тут ты набиваешь в переменную $RetriveFile содержимое страницы
  while(!feof($OpenFile)){  
    $RetrieveFile .= fread($OpenFile, 20000);  
  } 
  //дальше работаешь с этой переменной....
  //страничку обработал, файл закрыл....
  fclose($OpenFile);
  //И очишаешь переменную, чтоб в следующей ирретации она была пустой
  $RetriveFile = '';
}
-~{}~ 30.11.05 13:37:

по поводу днюхи - нелюблю совмещать праздники 8)
 

RadLine

Новичок
Сделал и получил...А всё равно не пашет...или я что не так понял?
 

chisto_tolyan

Враг народа
на,
PHP:
if($action == "list"){
    echo'<table border=0 width=100%><tr>
    <td align=left width=14>&nbsp;</td>
    <td align=left>&#205;&#232;&#234;</td>
    <td align=center>&#206;&#239;&#251;&#242;</td>
    <td align=right>&#199;&#226;&#224;&#237;&#232;&#229;</td></tr>';
  $all_users = file("mod/data/sostav.db.php");
  $i = 1;
  foreach($all_users as $user_line){
    $i++; $bg = "";
    if($i%2 == 0){ $bg = "bgcolor=\"\"";}
    if(!eregi("<\?",$user_line)){
      $user_arr = explode("|", $user_line);
      $GrabURL = "http://darkagesworld.com/vr/common/FighterInfo.aspx?username=$user_arr[1]";
      $RetrieveFile = '';
      $RetrieveFile = file_get_contents($GrabURL);
      preg_match('|<span id="lbExperience">([^\"]*)</span\>([^\"]*)<span id="lbLevel">([^\"]*)</span\>|iUs', $RetrieveFile, $DataPrint);
    }
    echo "<tr><td align=left><img width=14 height=14 src=http://alliance.yard.ru/full/a.gif border=0></td>";
    echo "<td align=left>$user_arr[1]".$DataPrint[3]."</td>";
    echo "<td align=center>".$DataPrint[1]."</td>";
    echo "<td align=right>$user_arr[2]</td></tr>";
  }
  echo "</table>";
}
что конкретно не пашет, там и проверяй
 

RadLine

Новичок
А как сделать, чтобы если в $user_arr[1] существует пробел ,- например: PARUS KYIV
ЧТОБЫ он в Грабе менялся на %20 ???

-~{}~ 30.11.05 14:52:

т.е. в url , который грабиться
 

zarus

Хитрожопый макак
urlencode
Рад, иди, почитай мануал сначала по ПХП вообще и по регулярным выражениям в частности. А решать свои задачи за счет чужих мозгов - моветон.
 
Сверху