![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 3 Dołączył: 25.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
jestem w trakcie przygotowywania skryptu z CURL. Posiadam ciąg z którego chcę wyciągnąć dane i godzinę: Dane dają się wyciągną ale dal łatwości pisania skryptu chciałem skorzystać z aliasów (chyba tak można to nazwać) http://pl.php.net/preg_match_all - > Przykład #3 Using named subpattern" title="Zobacz w manualu PHP" target="_manual Kiedy chce wyciągnąć np godzinę:
to wyświetla mi się:
zamiast:
bez względu na to czy dam: (?<name>\d++), (?<name>\d+), (?<name>\w++), (?<name>\w+) zawsze dostaje "[0] => 36". Kiedy daje (?<name>\d), (?<name>\w) wtedy dostaje "[0] => 6" Czy ma ktoś jakiś pomysł ![]() Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 1 Dołączył: 18.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
ja bym to zrobiła nieco inaczej, np. tak:
CODE preg_match_all('/(?<day>\d\d.\d\d.\d\d\d\d) godzina (?<hour>\d+):(?<min>\d+)/', $str, $matches);
Ten post edytował adanti 22.02.2009, 00:53:22 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 3 Dołączył: 25.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem to jeszcze inaczej
Ale bardzo dziękuje za pomoc i pokazanie jak powinna być składnia. Bo szukałem w manual`u ale nie mogłem nigdzie znaleźć opisu. Teraz pytanie czy taka składnia jest porwana i czy tak może być (?<godzina>.*\d:\d\d) Pozdrawiam Ten post edytował linx 22.02.2009, 09:14:51 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 1 Dołączył: 18.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
szczerze mówiąc nie jestem specjalistą od wyrażeń regularnych, składniowo chyba dobrze ale wydaje mi się, że trochę komplikujesz. może to Ci pomoże (mnie pomogło): wyrażenia reg.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 3 Dołączył: 25.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
No dobra mam jeszcze jedne problem, mianowicie (kod html):
No i wiadomo chcę wyciągnąć wszystkie dane, tylko jest problem że wartości są w różnych liniach i nie do konca to działa. Stworzyłem taką formułę:
Niestety przy takiej formule zwracana jest pusta tablica. Grzebiąc w necie dodawałem dodatkowe inf. typu i, s, si
Ale efekt jest taki że przy s, si dostaje jakieś dziwactwa:
No i wartości są czytane tylko z drugiego <TR></TR> Jak z tym sobie poradzić?? Czy ktoś ma jakiś dokładniejszy opis do preg_match, preg_match_all?? Pozdrawiam. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
błąd - poczytaj na google o wyrażeniach regularnych i zachłanność wyrażeń regularnych, w pojedyńczym apostrofie wstawiając spację jest ona spacją a nie trzeba pisać \s
![]() ![]() Kod $text='<tr class="">
<td width="30%">Australia</td> <td width="15%">DOLAR</td> <td width="17%">1 AUD</td> <td width="12%">2.3338</td> <td width="15%">2.4706</td> <td width="12%">2.4022</td> </tr> <tr class=""> <td width="30%">Kanada</td> <td width="15%">DOLAR</td> <td width="17%">1 CAD</td> <td width="12%">2.8924</td> <td width="15%">3.0622</td> <td width="12%">2.9773</td> </tr>'; $preg = preg_match_all('/<tr class="">[^<]*?<td width="30%">([^<]*?)<\/td>[^<]*?<td width="15%">([^<]*?)<\/td>[^<]*?<td width="17%">([^<]*?)<\/td>[^<]*?<td width="12%">([^<]*?)<\/td>[^<]*?<td width="15%">([^<]*?)<\/td>[^<]*?<td width="12%">([^<]*?)<\/td>[^<]*?<\/tr>/s', $text, $matches); echo '<pre>'; print_r($matches); echo '</pre>'; -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 3 Dołączył: 25.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki już wiem co źle robiłem.
A jeśli o programowanie to sam się uczę i ćwiczę i kombinuje. Pozdrawiam i dzięki za pomoc. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 16:03 |