Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]preg_match_all + foreach
Forum PHP.pl > Forum > Przedszkole
Diemorko
Witam, oto mój skrypt chcę by zwracał mi pobrane dane w tej formie:
Cytat
Array
(
[0] => Bubble
[1] => female
[2] => Knight
[3] => 273
[4] => Refugia
[5] => Thais
[6] => Free Account
)


Oto skrypt:
  1. <?php
  2. $site = file_get_contents('http://www.tibia.com/community/?subtopic=characters&name=Bubble');
  3. preg_match_all('/<td>([a-zA-Z0-9 ]+)</td>/is', $site, $matches, PREG_SET_ORDER);
  4.  
  5. foreach ($matches as $match) { $data[] = $match[1]; }
  6.  
  7. echo '<pre>';
  8. print_r($data);
  9. echo '</pre>';
  10. ?>


I oto błędy tongue.gif
Cytat
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 't' in /home/test.php on line 3

Warning: Invalid argument supplied for foreach() in /home/test.php on line 5


Bardzo proszę o pomoc :-)
_Borys_
'/<td>([a-zA-Z0-9 ]+)<\/td>/is'
Diemorko
Dzięki wielkie! Teraz napotkałem kolejny problem mianowicie:

  1. $page = file_get_contents("http://www.tibiarip.webd.pl/enter.php?login=k43bwi54&haslo=kaziulak15");
  2. $scroll = "|Available Premium Scrolls:</b>   (.*?)<div>|i";
  3. // get page source
  4. preg_match($scroll, $page, $scroll);

Oto co mi zwraca print_r :
Array ( )
Pustą tablicę, ktoś może wie jak to naprawić?
phpion
Zapewne zawartość strony nie pasuje do wyrażenia regularnego. Bez prawidłowego adresu, z którego pobierasz dane (lub samych danych) nikt nie będzie w stanie Ci pomóc.
Diemorko
Dodałem prawidłowy $page
phpion
Zobacz co masz w zmiennej $page, bo chyba nie taką zawartość, z której chciałbyś wyciągnąć dane. Po drodze następuje przekierowanie.
Diemorko
To chyba nie ma nic do rzeczy, bo jak pobieram inne dane to smiga to normalnie biggrin.gif Jakieś inne pomysły?
phpion
Ponawiam: co masz w zmiennej $page? Sprawdź czy aby na pewno takie informacje, z których możesz wyłuskać internesujące Cię dane.
Diemorko
ymmm, nie rozumiem.

Zobacz sam:
phpion
  1. $page = file_get_contents("http://www.tibiarip.webd.pl/enter.php?login=k43bwi54&haslo=kaziulak15");
  2. $scroll = "|<b>Available Premium Scrolls:</b>&XXX#160;&XXX#160;&XXX#160;([0-9]+)<div|i";
  3. // get page source
  4. preg_match($scroll, $page, $scroll);
  5.  
  6. var_dump($scroll);

Usuń z kodu wszystkie XXX. Dodałem, bo forum traktuje to jako encje.
Diemorko
Zwraca mi taką wartość:
array(0) { }
phpion
Usunąłeś XXX? Bo u mnie zwraca:
Kod
array(2) { [0]=> string(56) "Available Premium Scrolls:   0 string(1) "0" }
Diemorko
Tak tak strona jest ok i nie wiem czemu nie dziala :-/ ahh

Jednak działa tongue.gif wczesniej nie dodałem  , dzięki wielkie.
jackraymund
<?php $page = file_get_contents("http://www.tibiarip.webd.pl/enter.php?login=k43bwi54&haslo=kaziulak15");
$scroll = "|<b>Available Premium Scrolls:</b>   (.*?)<div|i";
// get page source
preg_match($scroll, $page, $scroll);
echo bin2hex($scroll[0]);
//26233136");
//&#16
var_dump($scroll);
?>
Diemorko
Jak pozyskac samą liczbe ? jak to wywołac? tongue.gif
phpion
Trochę samodzielności... albo nauki o tablicach.
jackraymund
ahh, musiałem wyłączyć komputer, i na szybko wrzuciłem sam kod usuwając co napisałem, lecz forum konwertuje ten znak
najlepiej szukać cały string, jeżeli coś nie jest pewne
$scroll = "|<b>Available Premium Scrolls:</b>(.*?)<div|";
potem wartośc z tego, czyli $scroll[0] przekonwertować przez bin2hex i sprawdzać po kolei znak z tablicy znaków
http://www.utf8-chartable.de/
ja znalazłem że pomiędzy : a 0 występuje 3 razy  


w sumie pewnie i tak gówno cię to interesuje, ale jest to najlepsza wg mnie metoda aby odkryć ukryte znaki które przeglądarka nam konwertuje do rzeczywistej postaci
cały kod
http://wklej.to/9363Z
wrzucam na wklejke bo na forum się nieda haha.gif
Diemorko
wywołałem $scroll[1]
ale zwraca mi &nXbsp;&nXbsp;&nXbsp;0
dodałem X żeby forum nie zjadło &nXbsp;

  1. $ready_scroll = explode("&nbsp;&nbsp;&nbsp;", $scroll[1]);


niestety nie pomada
phpion
Sprawdziłem kod, który Ci wkleiłem i prawidłowo zwraca dane. Wywołaj sobie:
  1. var_dump($scroll[1]);

Jest tam liczba bez żadnych śmieci.
Diemorko
string(1) "0"

jak się reszty pozbyc by było samo 0, nie ogarniam hehe
fate
  1. echo $scroll[1];
Dizzy
Kurde, gdy chcialem sprawdzic na innym koncie to nic nie zwraca :-/
Sami sprawdzcie:
  1. $page = file_get_contents("http://www.tibiarip.webd.pl/enter.php?login=marion221&haslo=marion123");
  2. $scroll = "|<b>Available Premium Scrolls:</b>&XXX#160;&XXX#160;&XXX#160;([0-9]+)<div|i";
  3. // get page source
  4. preg_match($scroll, $page, $scroll);
  5.  
  6. var_dump($scroll)

usuncie XXX ;p
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.