Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Praser kodu JS
Forum PHP.pl > Forum > PHP
expert
Witam,

czy istnieje coś takiego jak praser kodu JavaScript w PHP? Chodzi mi o to, żeby taki praser przetworzył mi kod js i wrócił go w gotowej postaci, tak jak by wyglądał w przeglądarce.
lukaskolista
Szczerze mowiac nie rozumiem. Chcesz zeby parser napisany w PHP sparsowal kod JS tak, aby dzialal w przegladarce? Przeciez kod JS dziala w przegladarce bez jakiegokolwiek parsowania... A moze chodzi Ci o to, ze chcesz wyswietlic kod na stronie tak, zeby sie nie wykonywal tylko zeby dalo sie go ogladac?
tehaha
pewnie głównie chodzi o jakieś pobieranie treści przez ajax, a próbowałeś takie wynalazki? - http://timwhitlock.info/blog/2008/05/09/fu...parser-for-php/
expert
Głównie mi chodzi o dynamiczne wstawianie obrazków za pomocą js.

Cytat(lukaskolista @ 22.08.2011, 19:43:50 ) *
Szczerze mowiac nie rozumiem. Chcesz zeby parser napisany w PHP sparsowal kod JS tak, aby dzialal w przegladarce? Przeciez kod JS dziala w przegladarce bez jakiegokolwiek parsowania... A moze chodzi Ci o to, ze chcesz wyswietlic kod na stronie tak, zeby sie nie wykonywal tylko zeby dalo sie go ogladac?


Właśnie chodzi mi o to, żeby się nie wykonywał, tylko żeby był już przetworzony przez praser.

Jeśli się nie mylę, to Opera mini miała coś takiego, tylko ona co jakiś czas wysyłała zapytanie do jakiegoś tam swojego serwera i po chwili odświeżała się strona z przetworzonym kodem js.
uirapuru
mowisz o ajax ?

tzn. chcialbys zeby skrypt dzialajacy na przegladarce komunikował się z serwerem, a serwer zwracał np. adresy do obrazków?
expert
Chodzi mi to to, aby z google maps wyciągnąć adery obrazków na własny użytek. Jak wiadomo, obrazki są wstawiane dynamicznie. Jak wlnę nieprzetworzony kod js, to nigdzien ie znajdę tych adresów, bopiero po przetworzeniu widać linki do obrazków.

Moze i u jest ajax, ale przy firebug idać, że większość pracy wykonuje js a nie ajax.
uirapuru
Kurcze, expert, to musisz trochę oględniej pisać i wyraźniej, bo ciężko Cię rozszyfrować.

W takim razie wydaje mi się, że ciężko będzie Ci osiągnąć swój cel. Bo jesli dobrze rozumiem, to chcesz uruchomić z poziomu JS kolejną 'instancję' JS, odpalić i uruchomić skrypty Google Maps, a potem wyciągnąć z tego to, co Cię interesuje. Szukaj innej drogi - wydaje mi się, że enkapsulacja skryptów Google nie pozwoli Ci tak łatwo wyłuskać tego o co Ci chodzi. A może właśnie to jest droga? Odpalić spokojnie Google Maps, a potem odpytywać przez API działające już i załadowane obiekty mapy itd?

Ps. Co to są 'adery obrazków' ?
expert
Adresy obrazków.

Mi chodzi o coś takiego: otwieram stroję google maps i po uruchomieniu zaglądam w źródło strony, które jest już po przetworzeniu js, czyli gotowa mapa że tak powiem.

To przetwarzanie js chce zrobić z poziomu php. Bo mógłbym pobrać źródło strony za pomocą curl, wyświetlić w przeglądarce, aby przeglądarka przetrawiła js i potem takiego gotowca przesłać z powrotem do serwera i za pomocą php go przetworzyć i wyciągnąć co mi potrzeba.

Chyba nie ogarniam co to jest API. wiem, że jest coś takiego, ale jak to osę je, już nie.
uirapuru
hmm

to czysta teoria, ale mógłbyś odczytać fragment kodu który Cię interesuje. Przyjmując, że chodzi Ci o kod, który znajduje się np. w tagach <div id='kod'></div> (przykład tylko), to z pomocą jquery mógłbyś cały ten wygenerowany html zczytać do zmiennej:

Kod
var moj_kod_html = $('div#kod').html();


a nastepnie wysłać go (w zmiennej) z pomocą ajaxa do skryptu php:

Kod
$.post('skrypt.php',{kod: moj_kod_html},function(response) {}, 'json');


Ja bym tak kombinował

w samym skrypt.php robisz już wtedy tylko

Kod
<?php

$post = json_decode($_POST);

$moj_kod = $post->kod;

?>

A co potem z nim robisz - Twoja sprawa (pewnie jakieś pregmatche)
expert
Tylko ja bym chciał, żeby wszystko odbywało się po stronie serwera. ale chyba nie da się inaczej...
tolomei
Siemka.
Oczywiście istnieją parsery JavaScriptu pod PHP tyle, że nie są zbyt popularne i dobrze udokumentowane(jak dla mnie).
Polecam dwa linki:
- J4P5 - nie zbyt potężny, ale jest - link,
- V8Js - jest to cały silnik javascriptowy od wujka Google, z tym, że wsparcie dla PHP jest znikome w społeczności więc trzeba sobie radzić troszkę samemu - link

Z chęcią bym bardziej pomógł w zagadnieniu, ale sam dopiero startuje w tym temacie.
Mam nadzieję, że co nieco naświetliłem.

Pozdro
uirapuru
tylko wątpie, czy taki engine odpali cały dokument - przeciez trzeba zbudowac, zinterpretować model DOM dokumentu, dopiero na nim przeciez Google Maps wykonuje operacje i w tej części mógłby się najwyżej przydać parser JS... moim zdaniem nie ma obecnie dostępnego rozwiązania zdolnego wygodnie to wykonać, ale nie twierdzę, że się nie da smile.gif
tolomei
Jeśli chodzi o kwestię załadowania dokumentu to JavaScript jest w stanie spokojnie pobrać sobie dokument i załadować drzewo DOM również z zewnętrznego źródła(np. jQuery load()).

Jeśli chodzi o kwestię wykonania całego zadania to trzeba byłoby się mocno nagimnastykować.
Jak wcześniej wspomniałem nie znam dobrze rozszerzenia v8js, ale zważywszy na fakt, że jest to wsparcie dla silnika javascriptu(nie jakiegoś byle interpretera), po drugie, że wyszło to spod rąk Googla, który większość swoich rozwiązań twardo bazuje na javascriptowym API(są więc świadomi jakim zadaniom silnik powinien sprostać), śmiem twierdzić, że podołałoby zadaniu.
Aczkolwiek jest to tylko moje "wydajemisię", więc proszę patrzeć na moje słowa z dystansem.
expert
To jeszcze mam takie pytanko, czy są jakieś programy, strony, które pokazują, jak po kolei działa kod js? Co do czego jest podstawiane, jakie są wartości zmiennych itd.
tolomei
Ja osobiście, gdy chcę podejrzeć wartość zmiennej w środku skryptu - wyświetlam ją w konsoli udostępnianej w dodatku Firebug dla Firefoxa lub w przeglądarce Chrome.

Aby wyświetlić tam zmienną używam polecenia console.log():

Kod
console.log(zmienna);
console.log(tablica[1]);
console.log(obiekt.metoda());
console.log("Id diva to: "+$("div").attr("id"));
expert
a gdzie to wklepujesz?

Bo próbuje z kodu js wyciagnąć, znaleść informacje skąd pobiera on dane o współrzędnych i o adresach obrazków..
tolomei
Do kodu JS:

  1. <script type="text/javascript">
  2. var rand = 0;
  3. for(i = 0; i<10; i++) {
  4. rand = Math.floor(Math.random()*11); // generuje losową liczbę od 1 do 20
  5. console.log(i+". Liczba od 0 do 10: "+rand);
  6. }


Wynik:
Kod
0. Liczba od 0 do 10: 2
1. Liczba od 0 do 10: 10
2. Liczba od 0 do 10: 9
3. Liczba od 0 do 10: 4
4. Liczba od 0 do 10: 1
5. Liczba od 0 do 10: 2
6. Liczba od 0 do 10: 6
7. Liczba od 0 do 10: 9
8. Liczba od 0 do 10: 3
9. Liczba od 0 do 10: 3


EDIT:
Hmmm, Ty chcesz tego użyć w swoim projekcie powyżej(troszke wyleciało mi z głowy)... To nie zadziała w takim razie...
To co Ci podałem to funkcja przeglądarki. Twój kod JS będzie parsowany przez PHP-owe rozszerzenie.

Może wstrzyknięcie własnego kodu JS w kod od Googla tuż przed parsowaniem ?
Ciężko powiedzieć... Może ktoś inny będzie miał pomysł...
expert
nie bardzo wiem jak mogę użyć tego prasera... gdzie co wstawić... żeby działało.
uirapuru
expert: na wstępie napisze tylko, żebyś przykładał uwagę do tego jak piszesz, po prostu łatwiej się czyta no i ludzie od razu inaczej będą Cię postrzegać. Chodzi mi między innymi o 'parser' (a nie praser, jak piszesz przez cały wątek - może się kojarzyć z prasowaniem wink.gif).

co do sprawdzania działania kodu, każdy język ma podstawowe narzędzie, z którego - mam wrażenie - początkujący nigdy nie korzystają (a mi np. php'owy bardzo ułatwia pracę) - DEBUGGER. Firebug taki udostępnia smile.gif Nie wiem jak to się ma do Twojego rozwiązania (którego wciąż niestety nie jestem w stanie ogarnąć), ale warto poszukać debuggera do js.
expert
Udało mi się znaleźć to, czego szukałem. GM przy generowaniu kodu strony (na serwerze), generuje też współrzędne z, y, z, które wstawia potem do adresów obrazków. Te współrzędne są w części js, tylko trzeba je sobie wyłuskać. A tym spokojnie może się zająć PHP.

Ja właściwie znalazłem to czego szukałem. No może po za jednym. Mianowicie zastanawiam się w jaki sposób wyciągnąć informacje o 'położeniu' ulic. np. ulica A na współrzędne takie: [10,20]; [10,40]; [20,40]; itd. API ma coś takiego? Chyba nie.
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.