Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]wyrażenie regularne
patryczakowy
post 1.09.2010, 14:03:02
Post #1





Grupa: Zarejestrowani
Postów: 420
Pomógł: 44
Dołączył: 22.10.2008

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


Na stronie są takie inputy jest ich kilka każdy ma inną nazwę
  1. <input name="rptDay$ctl01$ctl01$rptRoom$ctl02$rptPrice$ctl00$tbPN1" type="text" value="109.00" id="rptDay_ctl01_ctl01_rptRoom_ctl02_rptPrice_ctl00_tbPN1" disabled="disabled" class="pc_pricebox" />

potrzebuje wybrać to co jest pomiędzy name="rptDay a tbPN1" męcze się już chyba z drugą godzinę jak ktoś może podpowiedzieć będę wdzięczny
mój kod staną na takim etapie
  1. preg_match_all('#<input name="rptDay(.*?)tbPN1"(.*?)class="pc_pricebox" \/>+#is',$data,$out2);

ale nie pobiera tak jak trzeba
z góry wielkie dzięki za odpowiedź


--------------------
Sztuką jest widzieć to czego nie widać.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Noidea
post 1.09.2010, 16:38:25
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


Możesz wyjaśnić co znaczy "nie pobiera tak jak trzeba"? Albo chociaż podać przykłady inputów dla których nie działa?

U mnie to wyrażenie wyciągnęło odpowiednie dane.



PS. Do wyciągania informacji z HTMLa to raczej DOM się bardziej nadaje.


--------------------
Go to the top of the page
+Quote Post
patryczakowy
post 1.09.2010, 19:38:54
Post #3





Grupa: Zarejestrowani
Postów: 420
Pomógł: 44
Dołączył: 22.10.2008

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


problem rozwiązałem co prawda na okrętkę ale dało rady, ale zaciekawiło mnie to co powiedziałeś z tym doom-em , muszę poczytać na ten temat jak byś miał jakiegoś linka do dobrego opisu (po polsku pod ręką bym był bardzo wdzięczny za podesłanie


--------------------
Sztuką jest widzieć to czego nie widać.
Go to the top of the page
+Quote Post
Noidea
post 2.09.2010, 09:26:56
Post #4





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


Nie znam żadnych polskich tutoriali. Na w3schools.com są prosto napisane kursy DOM i XPath (PHP obsługuje tylko wersję 1.0 sad.gif ) + manual z php.net i da radę coś takiego sklecić.

Potrzebujesz tylko podstawy DOM i trochę więcej niż podstawy XPath, przykład:
  1. // Wyłączamy warningi związane z błędami w kodzie HTML:
  2. libxml_use_internal_errors( true );
  3.  
  4. $DOMhtml = new DOMDocument();
  5. //$DOMhtml->loadHTMLFile( "data.html" );
  6. // LUB:
  7. $DOMhtml->loadHTML(
  8. '<b><i>sss</b></i><br> > s<>df<s>d < dsfsd >< sdf > sdff & df
  9.  
  10. <input name="asdasdasd" type="text" class="pc_pricebox" />
  11. <input class="pc_pricebox" name="ffdfds" type="text" />
  12. <input name="rptDay$ctl11$ctl11$rptRoom$ctl11$rptPrice$ctl11$tbPN1" type="text" value="109.00" id="rptDay_ctl01_ctl01_rptRoom_ctl02_rptPrice_ctl00_tbPN1" disabled="disabled" class="pc_pricebox" />
  13. <input class="pc_pricebox" name="rptDay$ctl22$ctl22$rptRoom$ctl22$rptPrice$ctl22$tbPN1" type="text" value="109.00" id="rptDay_ctl01_ctl01_rptRoom_ctl02_rptPrice_ctl00_tbPN1" disabled="disabled" />
  14.  
  15. <input class="aaaaaaaa" name="rptDay$ctl33$ctl33$rptRoom$ctl33$rptPrice$ctl33$tbPN1" type="text" value="109.00" id="rptDay_ctl01_ctl01_rptRoom_ctl02_rptPrice_ctl00_tbPN1" disabled="disabled" />'
  16. );
  17.  
  18.  
  19. $xpath = new DOMXpath( $DOMhtml );
  20. $inputNameElements = $xpath->query( "//input[@class='pc_pricebox']/@name" );
  21.  
  22. foreach( $inputNameElements as $inputNameElement )
  23. {
  24. //echo $inputNameElement->nodeValue . "\n";
  25.  
  26. if( preg_match( "/^rptDay(.*)tbPN1$/", $inputNameElement->nodeValue, $match ) )
  27. {
  28. echo $match[1] . "\n";
  29. }
  30. }


Ten post edytował Noidea 2.09.2010, 09:28:49


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 22:01