Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> str_replace na ladowanym pliku gz
calebos
post 11.04.2008, 10:53:19
Post #1





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


Czesc.


Mam plik ktory bedzie szedl do bazy danych, ale najpierw musze w nim pozamieniac zespoly znakow '/|' ,'\|' etc.
Poniewaz separatorem pol w pliku jest '|'. Nie do konca czaje jak zrobic zeby rozumial ze ten bufor to string. Bufor wolalbym miec bo plik ma 67 w gz, a po rozpakowaniu 80mb.


Walnalem cos takiego
CODE

function unpackarch ($src,$dst)
{

$in_file = gzopen($src,"rb");
$out_file = fopen ($dst,"wb");

while (!gzeof ($in_file))

{

$buffer = gzread ($in_file,4096);
$bugz=array("\|","/|");
$buffer= implode("\n",$buffer);
$buffer = str_replace($bugz,"|",$buffer);
fwrite($out_file,$buffer,4096);
}
gzclose($in_file);
fclose($out_file);

}

unpack pliku dziala , ale str_replace nie.


Ten post edytował calebos 11.04.2008, 11:27:32
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
nevt
post 11.04.2008, 11:26:30
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


Umieść kod w odpowiednichz znacznikach BBcode.

Zamiast gzread() spróbuj zastosować gzgets() ... i wyrzuć linijkę z implode() ...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
calebos
post 11.04.2008, 12:09:35
Post #3





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


Dzieki za odpowiedz.

Poprawilem kod i teraz dziala. Mam problem z '/|' kombinuje na wszystkie sposoby i usuwa mi jedynie '\|' z tego pliku.

Zmienialem double quote na single itp odracalem kolejnosc i nadal sa /|.


Thx za pomoc.


PS. Jeszcze male pytanko dt buforu tzn jak wczyta 'fragment' to jest mozliwe zeby rozdzielil w momencie kiedy pojawia sie '/' a w nastepnym fragmencie pojawia sie '|' i wtedy str_replace nie zadziala bo nie ma occurency of '/|' ?
Nie jestem pewny na jakiej zasadzie skrypt czyta ten bufor czy z binarki czy ze stringa ?
Moze to jest idiotoodporne ale chcialbym wiedziec jak to dziala tongue.gif

Ten post edytował calebos 11.04.2008, 12:15:14
Go to the top of the page
+Quote Post
nevt
post 11.04.2008, 12:33:59
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


Cytat
PS. Jeszcze male pytanko dt buforu tzn jak wczyta 'fragment' to jest mozliwe zeby rozdzielil w momencie kiedy pojawia sie '/' a w nastepnym fragmencie pojawia sie '|' i wtedy str_replace nie zadziala bo nie ma occurency of '/|' ?

Bardzo trafne spostrzeżenie... Sprawdzaj ostani znak w buforze, i jeżeli jest to '/' doczytuj do bufora jeszcze jeden znak... powinno pomóc smile.gif


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
calebos
post 11.04.2008, 12:50:52
Post #5





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


Jakis hint dlaczego nie wychwytuje mi /| ?
Go to the top of the page
+Quote Post
nevt
post 11.04.2008, 12:58:35
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


chyba powinno być tak:
  1. <?php
  2. $bugz = array('|', '/|');
  3. $ok = array('|', '|'); 
  4. $buffer = str_replace($bugz, $ok, $buffer);
  5. ?>


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
calebos
post 11.04.2008, 14:49:11
Post #7





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


Hey

Niestety nadal mi nie lapie /| . Nawet jak wywale bufor to i tak to nie dziala.
Usuwa \| poprawnie.

CODE




function unpackarch ($src,$dst)
{ print ("Attempting to unpack and fix '$src' file......");
$in_file = gzopen($src,"r"); $out_file = fopen ($dst,"wb");
while (!gzeof ($in_file))
{
$buffer = gzgets ($in_file,4096);
$last= $buffer[strlen($buffer)-1];
print ("$last");
$bugz=array('/|','\|');
$fixes=array('|','|');
$buffer = str_replace($bugz,$fixes,$buffer);
fwrite($out_file,$buffer,4096);
}
gzclose($in_file);
fclose($out_file);
}



Go to the top of the page
+Quote Post
nevt
post 11.04.2008, 17:03:12
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


a możesz gdzieś wystawić przykładowy (kilka wpisów) plik źródłowy i wynikowy...? coś mi się zdaje, że to co chcesz usunąć nie jest kombinacją znaków '/|' tylko tak wygląda w pliku wynikowym...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
calebos
post 14.04.2008, 07:46:36
Post #9





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


Kurde niestety nie wzialem sobie zrzutu z tyrki wiec nie zapodam.
Myslisz zeby podejrzec jakims hexem czy czegos tam nie ma ?

Byloby to dziwne ale ludzie dziwne rzeczy wpisuja do custom fieldow ohmy.gif.

W hex jest 2F 7C wiec nie ma tam nic pomiedzy.

Jak mam wstawic ten txt .. ma 70mb.
Go to the top of the page
+Quote Post
nevt
post 14.04.2008, 09:03:31
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


nie wstawić (na forum) tylko wystawić (gdzieś w sieci do pobrania) i nie cały plik (70 MB) tylko jego kawałek (np. 10-100 kB). Wtedy będę mógł dokładnie sprawdzić co jest grane, bo u mnie na przykładowych danych "wklepanych" do skryptu ten str_replace() działa jak trzeba...

i jeszcze pytanie pomocnicze.. czy plik, który obrabiasz (z danymi) i plik skryptu PHP (z str_replace) mają tą samą strone kodową questionmark.gif


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 10:20