Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
patryczakowy
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ź
Noidea
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.
patryczakowy
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
Noidea
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. }
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.