Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
patrysiek2
Znowu problem i znowu z tym samym, czyli wyrażenia regularne ;/

Z tekstu:
Cytat
$tekst = '<a href="./memberlist.php?mode=viewprofile&u=123">Nick</a></td>';

chciałbym wyciągnąć liczbę (w typ przypadku '123'). Liczba ta jest zmienna więc wyciąganie wypadałoby zacząć od:
  1. viewprofile&u=

a skończyć na najbliższym ">.
Niestety nie udaje mi się :/

To takie moje zmagania z problemem:

  1. $tekst = '<a href="./memberlist.php?mode=viewprofile&u=680">ZmiennyNick</a></td>';
  2. preg_match_all('#href="[^"]*viewprofile&u=[0-9]*(\d+)*">$[^"]*"#', $tekst, $matches);


Proszę o pomoc w ułożeniu tego wyrażenia.
Qss
  1. preg_match_all('#href="(*.?)viewprofile&u=([0-9]+)">#', $tekst, $matches);
patrysiek2
Cytat(Qss @ 4.11.2013, 17:51:22 ) *
  1. preg_match_all('#href="(*.?)viewprofile&u=([0-9]+)">#', $tekst, $matches);


Warning: preg_match_all(): Compilation failed: nothing to repeat at offset 7 in /home/u251142990/public_html/func.php on line 72

A tak wygląda całość:
  1. function user_id($u_nick)
  2. {
  3. $config['address'] = 'http://forum.taern.pl/';
  4. $path['cookie'] = dirname(__FILE__).'/cookies.txt';
  5.  
  6. $post['username'] = 'dsgbw';
  7. $post['password'] = '***';
  8. $post['redirect'] = 'value="./memberlist.php?username="'.$u_nick;
  9. $post['login'] = 'Zaloguj się';
  10.  
  11.  
  12. $ch = curl_init($config['address'].'memberlist.php?username='.$u_nick);
  13. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  14. curl_setopt($ch, CURLOPT_HEADER, true);
  15. curl_setopt($ch, CURLOPT_COOKIEFILE, $path['cookie']);
  16. curl_setopt($ch, CURLOPT_COOKIEJAR, $path['cookie']);
  17. curl_setopt($ch, CURLOPT_POSTFIELDS, prepare_request($post));
  18.  
  19. $page = curl_exec($ch);
  20. curl_close($ch);
  21.  
  22. $tekst = '<a href="./memberlist.php?mode=viewprofile&u=680">ZmiennyNick</a></td>';
  23. preg_match_all('#href="(*.?)viewprofile&u=([0-9]+)">#', $tekst, $matches);
  24. print_r($matches);
  25. }


Chcę 'wycinać' tą liczbę ze zmiennej $page jbc.
Qss
zawsze mi sie myli ;D nie
  1. (*.?)

tylko
  1. (.*?)
patrysiek2
Cytat(Qss @ 4.11.2013, 18:24:50 ) *
zawsze mi sie myli ;D nie
  1. (*.?)

tylko
  1. (.*?)


Zmieniłem i pobierając ze zmiennej $tekst działa, ale jak daje to aby pobierało ze strony (cURL) to lipka :/
  1. function user_id($u_nick)
  2. {
  3. $config['address'] = 'http://forum.taern.pl/';
  4. $path['cookie'] = dirname(__FILE__).'/cookies.txt';
  5.  
  6. $post['username'] = 'dsgbw';
  7. $post['password'] = '**';
  8. $post['redirect'] = 'value="./memberlist.php?username="'.$u_nick;
  9. $post['login'] = 'Zaloguj się';
  10.  
  11.  
  12. $ch = curl_init($config['address'].'memberlist.php?username='.$u_nick);
  13. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  14. curl_setopt($ch, CURLOPT_HEADER, true);
  15. curl_setopt($ch, CURLOPT_COOKIEFILE, $path['cookie']);
  16. curl_setopt($ch, CURLOPT_COOKIEJAR, $path['cookie']);
  17. curl_setopt($ch, CURLOPT_POSTFIELDS, prepare_request($post));
  18.  
  19. $page = curl_exec($ch);
  20. curl_close($ch);
  21. preg_match_all('#href="(.*?)viewprofile&u=([0-9]+)">#', $page, $matches);
  22. //print_r($matches[1][0]);
  23. print_r($matches);
  24. }
Qss
wyświetl page i zobacz czy na pewno dobrze się pobrało i ewentualnie dodaj flagę m
  1. preg_match_all('#href="(.*?)viewprofile&u=([0-9]+)">#m', $page, $matches);
patrysiek2
Głupota ludzka biggrin.gif
Nie:
  1. viewprofile&u=

Lecz:
  1. viewprofile&amp;u=


Problem rozwiązany, thx za pomoc.
Moja rada : nie "badajcie elementu" podczas pisania wyrażeń regularnych lecz 100% źródło strony biggrin.gif
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.