Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z regex (program TV)
Forum PHP.pl > Forum > PHP
deha21
Chcę zrobić skrypt, który uporządkuje mi program TV. Program wygląda tak:
  1. 12:35 Cesarzowa Ki - odc. 14 (Empress Ki); serial kraj prod.Korea Połudn. (2013); STEREO, 16:9, Dla małoletnich od lat 12
  2. 13:35 Wojciech Cejrowski- boso przez świat - Rejs dla zuchwałych - txt. str. 777; cykl reportaży; STEREO, 16:9, Bez ograniczeń wiekowych

A skrypt tak:
  1. $text=nl2br($_POST['text']);
  2. $re = "/(\\d\\d):(\\d\\d) (.*);|(\\d\\d):(\\d\\d) (.*)/";
  3. preg_match_all($re, $text, $matches);
  4. $matches=$matches[0];
  5. $i=0;
  6. $text='';
  7. foreach ($matches as $key) {
  8. if (substr($matches[$i], -1)==";") {
  9. $text.=substr($matches[$i], 0, -1).'<br>';
  10. } else {
  11. $text.=$matches[$i].'<br>';
  12. }
  13. $i++;
  14. }
  15.  
  16. echo $text;

Problem w tym, że skrypt wyrzuca mi coś takiego:
  1. 12:35 Cesarzowa Ki - odc. 14 (Empress Ki); serial kraj prod.Korea Połudn. (2013)
  2. 13:35 Wojciech Cejrowski- boso przez świat - Rejs dla zuchwałych - txt. str. 777; cykl reportaży

Czyli, dalej po ";" jest tekst w danej linijce. Jak zrobić to żeby zostało mi samo:
  1. 13:35 Wojciech Cejrowski- boso przez świat - Rejs dla zuchwałych
Pyton_000
A nie wystarczy:
Kod
(\d+):(\d+)\s+(.*?);

questionmark.gif
deha21
Dzięki wielkie Pyton_000! Rzeczywiscie działa tak jak powinno. Mógłbyś pomóc jeszcze w tym:
  1. 07:20
  2. Tajemnice Laury (17/22) - serial, USA (dla małoletnich od lat 12)
  3. 08:20
  4. Sąd rodzinny (108) - program sądowy (dla małoletnich od lat 12)

Chciałbym mieć:
  1. 07:20 Tajemnice Laury (17/22)
  2. 08:20 Sąd rodzinny (108)
Pyton_000
To jest wynik poprzedniego ? Pokaż większy kawałek oryginału i wynik jaki chcesz.
deha21
Cytat(Pyton_000 @ 10.11.2015, 12:01:56 ) *
To jest wynik poprzedniego ? Pokaż większy kawałek oryginału i wynik jaki chcesz.

Nie, nie. Poprzedni wynik jest okej, taki jak chciałem. Ostatnio post to inny format textu wejśćiowego. Mam coś takiego jak poniżej, ale mi nie chce działać.
  1. (\d+):(\d+)\s+(.*) -

A później " - " zamieniam na pusty znak.
Pyton_000
Kod
(\d+):(\d+)\s+(.*?)\s*-


questionmark.gif
Pokaż kod ew.
deha21
Potrzebuję jeszcez pomocy z takim tekstem:
  1. 06:00
  2. Niesamowite rekordy, odc.1
  3. Opis, opis, opis; opis 123; opis
  4. 06:35
  5. Niesamowite rekordy, odc.2
  6. Opis, opis, opis; opis 123; opis; cos innego

Próbuję kombinować na bazie:
  1. /(\d+):(\d+)\n\s(.*)\n/

Ale za nic nie chce mi wyjść. Wykrywa mi tylko godzinę.
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.