Azzie [ bonobo ]
PHP i znak konca linii prosze o szybka pomoc!
Prosze o szybka pomoc, bo za maks godzine musze miec gotowy skrypt a utknalem na cholernej rzeczy :)
Skrypt zapisuje dane do pliku, na koncach linii musza byc oczywiscie znaki konca linii
Dowiedzialem sie juz ze w windowsie jest to \r\n a wiec zapisuje dane w nastepujacy sposob:
$dane='\r\n';
$dane=$dane.str_pad($i,8,'0',STR_PAD_LEFT);
$dane=$dane.'.\r\n';
Wg mnie efektem tego powinienem miec cos takiego:
[pusta linia]
[7 spacji]1.[koniec linii]
Tymczasem zamiast znakow konca linii pokazuja mi sie te cholerne \r\n w pliku... Cos robie zle?
Madril [ I Want To Believe ]
Znaki specjalne są interpretowane tylko w cudzysłowach. Napisz "\r\n" i powinno działać.
Azzie [ bonobo ]
Muchos gracias! :)
Tak to jest jak sie takie ciemniaki jak ja biora za programowanie :)
Madril [ I Want To Believe ]
- polecam, znajdziesz tu odpowiedzi na większość pytań w przyszłości. :)
yasiu [ Senator ]
madril - pewnie... tylko czasem odpowiedz jest potrzebna naprawde szybko a znalezienie odpowiedzi chwile trwa :))
Madril [ I Want To Believe ]
yasiu --> Ale ja pytać nie zabraniam, ba, jeśli będę potrafił, to z chęcią pomogę. :)
You tube my space. [ Konsul ]
WTF?
To jest to proste PHP?
$dane='\r\n';
$dane=$dane.str_pad($i,8,'0',STR_PAD_LEFT);
$dane=$dane.'.\r\n';
Python dla kontrastu:
print = '''
1.''' #GOL ucina spacje :P
Madril [ I Want To Believe ]
You tube --> Można to w PHP zapisać prościej, ale Azzie chce mieć stałą długość, niezależnie od wartości zmiennej $i. Poza tym, z tego, co napisał w kodzie to wyjdzie siedem zer i jedynka (jeśli $i ma wartość 1), a nie siedem spacji. :)
You tube my space. [ Konsul ]
Madril, uff, a już się wystraszyłem ;)
BTW rąbnąłem się z rozpędu z "print" ;P
Azzie [ bonobo ]
No dzieki tak szybkiej odpowiedzi wyrobilem sie na czas, nawet mam jeszcze chwile aby sie wykapac przed wyjsciem :)
Robie eksport faktur z bazy SQL do formatu WF Kaper dla Windows :) Nawet na razie sie udaje :)
Jeszcze tylko nie wiem jak zrobic aby euro lub dolary z SQL przeliczalo po kursie z odpowiedniego dnia... :(
Madril: Racja, tam mialo byc siedem zer, z rozpedu o tych spacjach napisalem :) Musze miec stala dlugosc aby trzymac sie specyfikacji formatu .kpm :)
yasiu [ Senator ]
azzie - a masz gdzies te kursy historyczne zapisane?
Azzie [ bonobo ]
Mam te kursy w xml, stad chyba najlatwiej bedzie je wyciagac:
Tylko ze jeszcze nie bardzo wiem jak :) Jest jakis sposob aby ten xml latwo przewinac i zczytac co potrzeba? Interesuja mnie tylko euro i dolary, a skrypt powinien docelowo tak dzialac aby automatycznie codziennie pobieral aktualne kursy (na serwerze ustawie, aby raz dziennie sie odpalal)
Madril [ I Want To Believe ]
Azzie --> Pisałem coś takiego na zajęciach w semestrze jesiennym. Trochę inne i z money.pl, ale myślę, że chwila na przerobienie i masz gotowy skrypt, a do tego poznasz zasadę działania, jakbyś musiał od nowa pisać. W każdym razie to sie robi za pomocą wyrażeń regularnych.
Po pracy (mam nadzieję, że nie zapomnę - najlepiej mi mail wyślij) Ci to wyślę, bo mam na stacjonarnym, a nie lapku... Mam nadzieję, że mam, ale nie pamiętam, żebym takie rzeczy usuwał.
No i z takiego XML'a będzie dużo prościej, bo ja musiałem całą stronę obcinać i wycinać z tabelek. :)
Azzie [ bonobo ]
OK, dzieki, przypomne sie wieczorem :) Na razie lece do tego ksiegowego, pochwalic sie co do tej pory zrobilem ;)
legrooch [ MPO Squad Member ]
Azzie ==> DOM i wszystko prosto i szybko :)
Azzie [ bonobo ]
legrooch: Niestety serwer nie jest moja wlasnoscia, wiec nie sadze aby chcieli zainstalowac to rozszerzenie dla mnie :)
Mam serwer na nazwa.pl
Azzie [ bonobo ]
upne gwoli przypomnienia i maila tez podesle na wszelki wypadek ;)
pecet007 [ Talk to the claw ]
Nie wiem czy ci to jeszcze potrzebne, ale tutaj masz w działaniu
A tu masz krótki kod
Download
Azzie [ bonobo ]
Madril: Sorry ale nic z tego nie zrozumialem :)
$tekst = file_get_contents("
preg_match_all('#<[\w =\"]*>\s<[\w =\"]*>[\w\s\(\)]*?</[\w =\"]*>\s<[\w =\"]*>[\d]+ [A-Z]3</[\w =\"]*>\s<[\w =\"]*>[\d]3</[\w =\"]*>\s<[\w =\"]*>[\d]1\.[\d]4</[\w =\"]*>\s<[\w =\"]*>[\+-]0,1[\d]+\.[\d]2</[\w =\"]*>\s</[\w =\"]*>\s#', $tekst, $w);
foreach($w[0] as $t)
$te = $te.$t;
$tekst = preg_replace('#<[\w =\"]*>\s<[\w =\"]*>([\w\s\(\)]*?)</[\w =\"]*>\s<[\w =\"]*>([\d]+ [A-Z]3)</[\w =\"]*>\s<[\w =\"]*>([\d]3)</[\w =\"]*>\s<[\w =\"]*>([\d]1\.[\d]4)</[\w =\"]*>\s<[\w =\"]*>([\+-]0,1[\d]+\.[\d]2)</[\w =\"]*>\s</[\w =\"]*>\s#', '$1 $2 $3 $4 $5'."\n", $te);
echo $tekst;
Probowalem to zrozumiec ale to nie na moja biedna glowe ;)
Zamiast tego znalazlem SimpleXML standardowo w PHP5 i zrobilem cos takiego :)
$tekst = file_get_contents("
$xml = new SimpleXMLElement($tekst);
echo $xml->pozycja[0]->nazwa_waluty . ' ' . $xml->pozycja[0]->kurs_sredni;
echo $xml->pozycja[4]->nazwa_waluty . ' ' . $xml->pozycja[4]->kurs_sredni;
I DZIALA! :)
Wyswietla: dolar ameryka�ski 2,8507euro 3,8277
Mimo to dzieki za ten skrypt, moze kiedys uda mi sie te wyrazenia regularne zglebic :) Na poczatku jednakze mialem wrazenie jakby brakowalo mi jakiejs czcionki ;)