Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Parsowanie tablicy JS, JS Array => PHP Array
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Transferuj.pl umożliwia pobranie wszystkich kanałów za pomocą pliku JS o strukturze:

  1. /**
  2.  * JavaScript channel selection
  3.  *
  4.  * @author Transferuj.pl
  5.  * @version 1.0
  6.  *
  7. */
  8. var tr_channels = Array();
  9. tr_channels[0] = ['18','mBank','1','https://secure.transferuj.pl/images/kanaly/e_mbank.png','00:00-24:00'];
  10. tr_channels[1] = ['13','ING Bank Śląski SA','1','https://secure.transferuj.pl/images/kanaly/ing.png','00:00-24:00'];
  11. tr_channels[2] = ['14','Inteligo','1','https://secure.transferuj.pl/images/kanaly/inteligo.png','00:00-24:00'];
  12. [...]


Dzięki temu pliku można sobie ładnie zbudować listę kanałów na swojej stronie jednakże chciałbym uniknąć budowania tego w oparciu o JS.
Zastanawiam się jakie są możliwości przekształcenia tablicy JS w PHP.

Pobranie zawartości pliku - file_get_contents.
Ale co dalej? Ma ktoś jakieś ciekawe rozwiązanie czy zostają tylko wyrażenia regularne albo linia za linią i wyłuskiwanie tych danych?

Ten post edytował markonix 7.09.2012, 11:20:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


Cytat
To co chce zrobić to tablicę PHP, a jaki jest tego cel to przyznaj, że nie ma to znaczenia.
No właśnie sęk w tym, że mogłoby się okazać, że istnieje inne rozwiązanie na wyświetlenie listy kanałów, niż parsowanie tablicy .js, chociażby pobranie ich z podstrony oferty, ale widzę, że tam nie ma ID, bo pewnie sam nie raz zauważyłeś na forum, że ktoś przychodzi z dziwnym problemem, a potem się okazuje, że daną funkcjonalność można było inaczej uzyskać. Akurat w tym przypadku dziwne jest, że transferuj nie udostępnia bardziej wszechstronnego formatu, ale trudno.

Ponieważ plik jest prosty i kolejne wersję będą miały podobną strukturę dla utrzymania wstecznej kompatybilności, ja bym to zrobił mniej więcej tak:
  1. $js = file('https://secure.transferuj.pl/channels-10100.js');
  2. $array = array();
  3. foreach($js as $line)
  4. {
  5. if(strpos($line, '=') && !strpos($line, 'Array'))
  6. {
  7. $lineParts = explode('=', $line);
  8. $lineData = explode(',', str_replace(array('[', ']', ';', "'"), array('', '', '', ''), $lineParts[1]));
  9. $array[] = array('id'=>$lineData[0], 'name'=>$lineData[1],'active'=>$lineData[2], 'url'=>$lineData[3], 'hours'=>$lineData[4]);
  10. }
  11. }
  12. print_r($array);
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 09:43