Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z wyrażeniem regularnym
Forum PHP.pl > Forum > Przedszkole
mickey23
Witam,

Próbuję napisać wyrażenie regularne które wyciągnie mi czas w formie:

1. 2 godz. 30 min
2. 2 godz.

Zrobiłem:

  1. $time = '/<span class="time">(.+?) min. /


To wyciąga mi dane gdy są podane minuty, ale nie działa gdy jest tylko godzina, więc spróbowałem tak:

  1. $time = '/<span class="time">(.+?)godz|min/';


Niestety nie działa ten sposób :/

Jak w takim razie powinno wyglądać to wyrażenie żeby działało w obu przypadkach ?
Pyton_000
np.:

(.*)godz.(!?(.*)min)?
mickey23
Niestety mi to nie działa dla wyrażeń:

<span class="time"> 1 godz. 30 min. </span>
<span class="time"> 1 godz. </span>
<span class="time"> 10 min. </span>
Pyton_000
<span class="time">(!?(.*)godz.)?(!?(.*)min.)?
mickey23
Kurde, mi to niestety nie działa.

Konkretnie wyciągam czas stąd:
http://www.filmweb.pl/search/film?q=&t...rtal&page=1

Tylko tam nie jest:
<span class="time"> 1 godz. 30 min. </span>
tylko:
<span class="filmTime"> 1 godz. 30 min. </span>

Ale tak czy inacej nie działa mi wyrażenie, które mi podsunąłeś :/
Crozin
1. Do wyciągania danych z HTML powinieneś użyć parsera HTML (np. DOMDocument), a nie wyrażeń. Tych możesz co najwyżej użyć do wyciągnięcia danych z tekstu.
2. Mając tekst "X godz. Y min.", "X godz." bądź "Y min." możesz skorzystać z następującego wyrażenia do wciągnięcia danych:
Kod
/(?:(?P<hours>\d+) godz\.)?\s*(?:(?P<minutes>\d+) min\.)?/
viking
Jest też jeszcze opcja skorzystania z innych serwisów na bazie normalnego API gdzie wszystkie dane o filmie są zwracane w postaci JSON.
Pyton_000
Proszę bardzo:
https://github.com/nSolutionsPL/filmweb-api

uzywałem i działa nieźle
mickey23
To API się nie sprawdzi, a kod CROZINA nie działa:

https://3v4l.org/7Y0eA

Może ktoś ma jakieś sugestie ?
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.