Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd z print i explode, wywala mi Array :(
Forum PHP.pl > Forum > PHP
Sam Gamgee
Mam taki skrypt generujący w mojej tabeli na mojej stronie aukcje allegro:

[php:1:23faf58018]<?php
<?

$temp = file("http://www.allegro.pl/showcat.php?id=6065");

foreach($temp as $temp_str) $strona .= $temp_str;

$strona = explode("<table border=0 cellspacing=0 cellpadding=2 width=100% class=listing_r>", $strona);
$strona = explode("<!-- Footer start -->", $strona);

print $strona[0];

?>
?>[/php:1:23faf58018]

No i jak to daje na serwer to mi wywala Array, nie wiem za bardzo o co chodzi. Może jest ktoś kto mi pomoże?? Dzięki z góry. biggrin.gif
chfast
Sprawa jest chyba prosta. Ale nie bardzo wiem co chcesz zrobić.
Dlaczego Array? Bo próbujesz wyświetlić tabele a tego ci zrobić nie wolno smile.gif . Funkcja [manual:bcc77b6925]explode[/manual:bcc77b6925] dzieli tekst na kawalki oddzielone od siebie podanym fragmentem (pierwszy parametr) i zapisuje otrzymane czesc do tablicy. Uzyskujesz wiec tablice! Napisz najlepiej co chcesz zrobić to pomoge.

Przy okazji - zrób taką poprawkę:
[php:1:bcc77b6925]<?php
$temp = file("http://www.allegro.pl/showcat.php?id=6065"); 
$strona = implode( "", $temp ); //info -> manual
?>[/php:1:bcc77b6925]

PS. Staraj się nie używać skróconych znaczników php: zamiast <? pisz <?php.
Cudi
Wsadziłeś do explode'a tablice (którą też zwrócił explode), więc on odwdzięczył Ci sie tym samym winksmiley.jpg

Zmień nazwy zmiennych, tak aby nie pierwszy explode nie zwracał danych do zmiennej $strona, bądź jako parametr drugiego wstaw element tablicy zwróconej przez pierwszy:
Kod
$strona = explode("<!-- Footer start -->", $strona[0]);
chfast
No to jazda... biggrin.gif
Już chyba kumam.

Podam sposób mało elegancki, ale chyba zrozumiałe (co jest najważniejsze).

Robimy tak:
[php:1:a6d8ab1875]<?php

//zapisujemy w tablicy $allegro interesującą nas stronę
$allegro = file("http://www.allegro.pl/showcat.php?id=6065");

//łączymy tablice z w całość (tablica->string) za pomocą pustego łańcucha znaków ""
$strona = implode( "", $allegro );

//dzielimy strone na dwie części (zapisza sie w tablicy): to co jest przed <table> i to co po...
$czesci = explode( "<table border=0 cellspacing=0 cellpadding=2 width=100% class=listing_r>", $strona );

//zamieniamy zmienna $strona na to co w drugiej części
$strona = $czesci[1];

//znowy dzielimy strone: przed i po Footer
$czesci = explode("<!-- Footer start -->", $strona);

//dopisujemy pierwsza czesc do $strona
$strona = $czesci[0];

echo $strona;
?>[/php:1:a6d8ab1875]

Mam nadzieje, że się nie pomyliłem...
Sam Gamgee
Zjadłeś kilka literek ale poprawiłem i działa. A jak teraz dodać "przedrostek" http://www.allegro.pl/ do każdego linku, domyślnie jest bez tego http://www.all...

I jest problem ze znakami da się jakoś zrobić prawidłowe znaki (kodowanie mam takie same co na allego ISO... a jednak nie mam takiego samego oni mają takie coś: Widok/Źródło <META http-equiv=Content-Type content="text/html; charset=utf-8"> - co to ma być?questionmark.gifquestionmark.gifquestionmark.gif? Pa pa tongue.gif Dzięki bardzo biggrin.gif biggrin.gif biggrin.gif biggrin.gif
Sam Gamgee
Aha już wiem :idea: o kodowaniu to Unicode (UTF-8), juz nie trzeba o kodowaniu ale jak zrobić to http://www.allegro.pl questionmark.gif rolleyes.gif
chfast
Cytat
A jak teraz dodać "przedrostek" http://www.allegro.pl/ do każdego linku, domyślnie jest bez tegohttp://www.all...

[php:1:04243921dc]<?php
$strona = str_replace( "<a href=/showcat.php", "<a href=http://allegro.pl/showcat.php", $strona );
?>[/php:1:04243921dc]

Cytat
I jest problem ze znakami da się jakoś zrobić prawidłowe znaki (kodowanie mam takie same co na allego ISO... a jednak nie mam takiego samego oni mają takie coś: Widok/Źródło <META http-equiv=Content-Type content="text/html; charset=utf-8"> - co to ma być?questionmark.gifquestionmark.gifquestionmark.gif?

To unicode-8. Zmień swoje kodowanie na Unicode-8.

PS: Napisz gdzie jest błąd w moim kodzie to poprawie, żeby się ktoś potem nie wyłożył.
Sam Gamgee
Taki jest poprawny:

pogrubione to co ja poprawiłem:

Cytat
<?

$allegro = file("http://www.allegro.pl/showcat.php?id=6065");  

$strona = implode( "", $allegro );  


$czesci = explode( "<table border=0 cellspacing=0 cellpadding=2 width=100% class=listing_r>", $strona );  
$strona = $czesci;  
$czesci = explode("<!-- Footer start -->", $strona);  
$strona = [b]$;  

echo $strona;  
?>
Sam Gamgee
Ten skrypt na przedrostek nie działa chyba ide sie zabic... :cry: :cry: :cry:

Każdy adres ma inna stronę bo ma numerek na końcu ale nawet jak dam coś takiego:

[php:1:2c3e6e8f44]<?php
$strona = str_replace( "<a href=/show_item.php?item=18540219", "<a href=http://www.allegro.pl/show_item.php?item=18540219", $strona );

?>[/php:1:2c3e6e8f44]

to i tak nie działa :cry: :cry:
chfast
Cytat
ide sie zabic... :cry:  :cry:  :cry:

Nie płakusiaj. Jutro spróbuje to zrobić... narazie to tylko pisałem teoretycznie. Wydaje mi się, że tak powinno się udać, ale pewny nie jestem. Dziś już późno więc ide spać.
Sam Gamgee
Już jest jutro?? Bo jak tak to plose o pomoc tongue.gif :?:
chfast
Troche mi się zapomniało.
Sprawa okazała się prosta: brakowało cudzysłowów.
[php:1:60ede7f2c4]<?php
$strona = str_replace( '<a href="/show_item.php', '<a href="http://allegro.pl/show_item.php', $strona );
// jesli w kodzie sa linki do kategorii to jeszcze to:
$strona = str_replace( '<a href="/showcat.php', '<a href="http://allegro.pl/showcat.php', $strona );
?>[/php:1:60ede7f2c4]
Mam nadzieje, że teraz już wszystko dobrze.
Sam Gamgee
yeeeeeeee działa wszystko!!! Teraz to moge sobie fajne żeczy porobić biggrin.gif Dzięki chwast, jestem twoim dłużnikiem a http://forum.webhelp.pl to duża klapa. Tam każdy za pomoc tylko $$$ ciągnął angrysmiley.gif angrysmiley.gif Tutaj to są pożądni ludzie. Webhelp do Iraku wysłać!!!! aaevil.gif
chfast
Cytat
http://forum.webhelp.pl to duża klapa. Tam każdy za pomoc tylko $$$ ciągnął angrysmiley.gif  :evil: Tutaj to są pożądni ludzie. Webhelp do Iraku wysłać!!!! aaevil.gif

Już bez przesady. Takie głupoty to możesz pisać najwyżej na Hydepark... ale i to nie jest dobre miejsce na głupie komentarze.
Sam Gamgee
No może ale ja tylko opisuje fakty laugh.gif Prosze sie nie denewrwować ale ja takie miałem wrażenia w WH.
Cudi
To wyraź je tam, a nie tu smile.gif To sie nazywa obgadywanie, a tego nikt nie lubi. Psujesz nie tylko swoją reputacje ale i naszą. Jak Ci sie tam nie podoba to oni napewno mają dział opinie, wyraź swoje myśli tam. To nie jest miejsce na takie rzeczy.
Sam Gamgee
Ok, rozumiem, przepraszam. Tylko się nie obrażajcie :cry: Nie chciałem nikogo urazić etc. :? Już więcej nie będę :?
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.