Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]preg_match+problem
Dizzy
post
Post #1





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 6.09.2008

Ostrzeżenie: (10%)
X----


  1. <?
  2. $world= 'Harmonia';
  3. $town= 'Venore';
  4. $nic = "";
  5. $houses = 'houses';
  6. $domek = 'Salvation&nbsp;Street&nbsp;2';
  7.  
  8. $ch = curl_init("http://www.tibia.com/community/?subtopic=houses");
  9. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  10. curl_setopt($ch, CURLOPT_POST, 1);
  11. curl_setopt($ch, CURLOPT_POSTFIELDS, "world=".$world."&state=".$nic."&order=".$nic."&&type=".$houses."&town=".$town);
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  13. echo curl_exec($ch);
  14. $strona = curl_exec($ch);
  15. preg_match_all('/'.$domek.'</nobr></td>(.*?)<input name="houseid" value="([0-9]+)"/', $strona, $id, PREG_SET_ORDER);
  16.  
  17. print_r($id);
  18. ?>

błąd: Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 'n' in /house.php on line 15
ma pobrac houseid nastepnie ponownie cURL'em przejsc na kolejną strone i pobrac link obrazka domku.
Proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Jako że lubię zabawę z wyrażeniami regularnymi, pobawiłem się trochę sam - poczytaj moje komentarze. Przykład przetestowany, działa.
  1. <?php
  2. $world= 'Harmonia';
  3. $town= 'Venore';
  4. $nic = "";
  5. $houses = 'houses';
  6. $domek = 'Salvation&[usuń to]#160;Street&[usuń to]#160;2'; // zauważ, że zmieniłem &nbsp; na &[usuń to]#160; - tak było w źródle
  7.  
  8. $ch = curl_init("http://www.tibia.com/community/?subtopic=houses");
  9. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  10. curl_setopt($ch, CURLOPT_POST, 1);
  11. curl_setopt($ch, CURLOPT_POSTFIELDS, "world=".$world."&state=".$nic."&order=".$nic."&&type=".$houses."&town=".$town);
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  13. $strona = curl_exec($ch); // najpierw zapisz do zmiennej, potem wypluwaj, żeby dwa razy nie robić curl_exec
  14. echo $strona; // po co wypluwasz źródło?
  15. // Twój kod nie oddawał struktury HTML ze źródła - tu nie ma cudzysłowów, a tagi są zapisane wielkimi literami;
  16. // Oprócz tego zmieniłem nazwę zmiennej $id na $matches, bo ona przechowuje też całe dopasowania
  17. // Znowu zmieniłem znaki graniczne wzorca, tym razem na {...}, bo w $domek występują kratki
  18. // Usunąłem nawias z (.*?) - domyślam się, że nie interesuje Cię ta zawartość, więc nie ma sensu jej przechwytywać i zaśmiecać zmiennej z dopasowaniami
  19. preg_match_all('{'.$domek.'</NOBR></TD>.*?<INPUT TYPE=hidden NAME=houseid VALUE=([0-9]+)}s', $strona, $matches, PREG_SET_ORDER);
  20. print_r($matches);


EDIT

Forum pozamieniało mi zakodowaną spację na zwykłą, więc oczywiście pozbądź się bloków [usuń to] (IMG:style_emoticons/default/smile.gif)

Ten post edytował SmokAnalog 27.10.2013, 10:42:16
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 19:19