Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Umieszczenie w zmiennej tagu z cmsa
Forum PHP.pl > Forum > PHP
gdti
Ciężko opisałem, otóż mam dokładnie taki kod:

  1. <?php
  2. include('simple_html_dom.php');
  3.  
  4. $link = 'http://www.xvideos.com/';
  5. $$link = 'video512156';
  6.  
  7.  
  8. // Create DOM from URL or file
  9. $html = file_get_html("$link${$link}");
  10.  
  11. // Find all images
  12. foreach($html->find('img[class=thumb]') as $element)
  13. echo $element->src . '<br>';
  14.  
  15. // Find all links
  16. //foreach($html->find('a') as $element)
  17. // echo $element->href . '<br>';
  18.  
  19.  
  20.  
  21.  
  22.  
  23. ?>




Nie wiem czy to tlumaczyc ale skrypt pobiera adres url obrazka o danej klasie z danej podstrony


Cały kod działa prawidłowo (powiedźmy). W tym momencie zmienna $$link ma wartość: 'video512156';, chcę żeby miałą wartość taką: $$link = 'video[xvfield_film]'; gdzie [xvfield_film] to tag z cmd Datalife wyświetlający ciąg ustalonych kilku cyfr. Kiedy jednak ustalę wartość z tym tagiem wyskakują błędy, że nie poznaje dalszych znaczników. Zaznaczę tylko, że kiedy wstawiona jest wartość jak na przykładzie na samej górze (z gotowymi cygrami) link wyswietla się prawidłowo. Podejrzewam, że chodzi o to iż w includowanym pliku php do pliku szablonu fullstory (tpl) te tagi nie działają. W jaki sposób mogę się z tym uporać? Szukam w internecie od kilku dni, pisałem na forach dle ale tam za przeproszeniem g**** się znają. Wiem, że TU są eksperci wink.gif łaskawie proszę o pomoc.
mstraczkowski
Przeczytałem temat kilka razy, ale niestety dalej nie mogę zrozumieć co chcesz osiągnąć.
Jakbyś spróbował trochę lepiej to wytłumaczyć to myślę, że szybko znalazłby się ktoś kto by Ci pomógł.
gdti
Dobrze, postaram się jeszcze raz wytłumaczyć.

Otóż, posiadam stronę z filmami opartą o skrypt Datalife Engine. Stworzyłem skrypcik, który automatycznie pobierać będzie url grafiki z danego adresu podstrony z xvideos. Plik php, który pokazałem we wcześniejszym poście includuję to fullstory.tpl czyli części odpowiadającej za wyświetlenie pełnego artykułu.

Tak jak w kodzie jest zmienna
  1. $html = file_get_html("$link${$link}");

której treścią są 2 zmienne
  1. $link = 'http://www.xvideos.com/';
  2. $$link = 'video512156';


pierwsza z nich z treścią http://.. będzie stała, nie zmienna, w drugiej natomiast zamiast video512156 umieszczam [xvfalue_film] który powinien ukazać dokończenie linku czyli np. video512156 itp. Tag xvfalue to tag do dodatkowych pól w artykułach z cms Datalife. Kiedy jednak pod zmienną $$link umieszczę ten tag - wywala mi błąd:
  1. Fatal error: Call to a member function find() on a non-object in /home/detmer/public_html/benek/skrypt.php on line 12


linia 12 to:

  1. foreach($html->find('img[class=thumb]') as $element)


Wydaje mi się, że znaczy to, że do zmiennej $html włączył się kod [xvfalue_film] a nie treść, która powinna ją zastąpić (czyli np. video512156)
Jak uporać się z tym? Może znacznik xvfalue działa tylko w plikach tpl? Ale jak wtedy go tam "włożyć"?

Chyba wyjaśniłem teraz? smile.gif

Z tego co zauważyłem na szybko:

plik ze skryptem php includowany jest do "fullstory.tpl" i teraz tak:
Kiedy dodam tak po prostu tag (xvfalue) gdzie kolwiek w fullstory wyświetlają się cyfry prawidłowo, kiedy dodam go za to w pliku php (includowanym do tego samego fullstory.tpl!) nie wyświetlajaą się cyfry a po prostu [xfvalue_film] tzn, nie przetwarza tego. W jaki więc sposób mam to zrobić?
sazian
po pierwsze zmień nazwę zmiennej $$link ponieważ jest nieprawidłowa, znaczy się jest prawidłowa ale nie w twoim przypadku
po drugie sprawdź przez var_dump co masz w zmiennej $html
gdti
Napiszę może jak ja czytam ten skrypcik, może źle myślę, robię w php od przedwczoraj.
Otwieram znacznikiem php skrypcik, wczytuję "bazy mniejszych jakiś działań.." (powiedzmy..) następnie wczytuję pierwszą zmienną która jest adresem ów strony potem drugą o treści [xfvalue_film] . Teraz skrypt sczytuje wszystkie elementy html z linku, który poprawiłem, potem wyszukuje elementy img class="thumb" potem wydaje nam src obrazka. Pod spodem jest to samo do linków ale najpierw muszę rozwiązać ten problem. Ogólnie skrypt działa, tylko kiedy wstawie te xfvalue wyskakuje wcześniej wymieniony błąd.



sazian - nie wiem co znaczy var_dump, nie wiem co mam zrobić..



  1. <?php
  2. include('simple_html_dom.php');
  3. $link = 'http://www.xvideos.com/video';
  4. // Pobieranie elem.
  5. $html = file_get_html("$link[xfvalue_film]/");
  6.  
  7. // Wyszukanie thumba
  8. foreach($html->find('img[class=thumb]') as $element)
  9. echo $element->src . '<br>';
  10.  
  11. // Wyszukanie linków (wyłączone)
  12. //foreach($html->find('a') as $element)
  13. // echo $element->href . '<br>';
  14. ?>
sazian
var_dump wyświetla zmienne


dostałeś komunikat
Cytat
Fatal error: Call to a member function find() on a non-object in /home/detmer/public_html/benek/skrypt.php on line 12

co oznacza że próbujesz odwołać się do zmiennej jak do obiektu ale ta zmienna nie jest obiektem, przy pomocy var_dump możesz sprawdzić "czym jest" ta zmienna



chociaż ja bym użył curl i DOMDocument
np tak
  1. $url = 'http://......';
  2. $ch = curl_init();
  3. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  4. curl_setopt($ch, CURLOPT_VERBOSE, true);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  6. curl_setopt($ch, CURLOPT_USERAGENT, array_rand('Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:22.0) Gecko/20130308 Firefox/22.0'));
  7. curl_setopt($ch, CURLOPT_URL, $url);
  8. $body = curl_exec($ch);
  9. curl_close($ch);
  10. $html = new DOMDocument();
  11. $html->loadHTML($body);
  12.  

do wyszukiwania możesz użyć DOMXPath oraz jej metody query http://pl1.php.net/manual/pl/domxpath.query.php
gdti
Po wielu próbach znam dokładny, konkretny powód, nie znam jednak sposobu jego rozwiązania, otóż:

Znacznik [xfvalue_x] (który cms Datalife zastąpi za dane pole tekstowe) wrzucony w plik o rozszerzeniu php (obojętnie czy w znaczniki <? ?> czy nie) zostaje rozbrojony i wyświetla suchy tekst, po prostu [xfvalue_x].

Jak się z tym uporać?

Jest to dla mnie bardzo ważne, jeżeli jest dopuszczone to na waszym forum to zapłacę skromne 20zł za rozwiązanie problemu. Mozna zadzwonic: 518 405 678

do zamknięcia. smile.gif
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.