![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 24.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam napisać skrypt, który po podaniu nazwy miasta łączy się z serverem Poczty Polskiej (http://www.poczta-polska.pl/kody.php) i pobiera z niej odpowiednie kody pocztowe. Zrobiłem to w taki sposób, że po podaniu nazwy miasta jest ona wklejana do odpowiedniego adresu zawierającego wyniki przeszukiwania (http://www.poczta-polska.pl/kody.php?kod=&ulica=&miejscowosc=nazwa_miasta&powiat=&wojewodztwo=dowolne&action=search gdzie nazwa_miasta zostaje zamieniona na tę podaną przez użytkownika). Dodatkowo mam jeszcze problem z funkcją ereg(). W całości wygląda to tak:
Wydaje mi się, że tak to powinno wyglądać, ale coś nie działa. Wywala mi: Fatal error: Call to undefined function: file_get_content() in c:\usr\krasnal\www\marqo\kody4.php on line 14 Widze, że chodzi o file_get_content() ale nie mam pojęcia co z tym zrobić.Napisałem alternatywny skrypt gdzie file_get_content() zamieniłem na fopen. Tym razem nie ma żadnych błędów, ale nie dostaję żadnych wyników. Druga wersja wygląda tak:
Proszę o jakieś wskazówki, może podeszłem w zły sposób do tego problemu, może da się to zrobić w inny sposób, albo poprostu wystarczy poprawić coś w jednym z moich skryptów. Pomocy!!! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 24.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Teraz skrypt już daje jakieś wyniki, ale to jeszcze nie to. Po wpisaniu nazwy miasta, np. Radlin dostaje coś takiego:
44-310 44 310 Wydaje mi się, że dzieje się tak z powodu warunku, który podałeś '([0-9]{2})-([0-9]{3})', dlatego ja miałem go bardziej rozbudowany: ^([0-9]{2})(-[0-9]{3})?$ gdzie znak karetki miał oznaczać, że dwie cyfry mają znaleść się na początku, trzy na końcu, a pomiędzy nimi ma być myślnik. Takie wyrażenie powoduje jednak błąd: Warning: Invalid argument supplied for foreach() in c:\usr\krasnal\www\marqo\kody4.php on line 22 czyli w:
Jest jeszcze jeden mankament: dla dowolnego miasta np. Radlina powinny być wyświetlone dwa kody 44-310 i 44-313, a on podaje tylko pierwszy znaleziony. Metodą prób i błędów doszedłem do tego jak wyszukać cały kod, wystarczyło pozbyć się nawiasów z warunku. Teraz w wyniku działania skryptu dostaję cały kod pocztowy, co niezmienia faktu, że dostaję tylko pierwszy znaleziony kod. Czy jest jakiś sposób żeby ereg() przeszukał cały ciąg, a nie tylko do pierwszego pasującego fragmentu? Teraz wygłąda to tak:
A teraz przyszedł czas na zupełnie inny wątek moich rozważań na temat mego skryptu. Pogłówkowałem troche (pare dobrych godzin (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) i rozwiązałem problem z funkcją ereg(). Teraz mój skrypt wygląda tak:
Do pełni szczęścia pozostaje mi do rozwiązania tylko jeden problem jakim jest dublowanie wyników (czasami w wynikach pojawia się kilka razy ten sam kod, ale to już wina PP, a nie skryptu). Może ktoś ma jakiś pomysł jak to zrobić, a może istnieje jakaś funkcja, która sprawdza daną tablicę i usówa z niej powtarzające się wartości? Na koniec wypada podziękować tym którzy mnie wsparli w tej ciężkiej przeprawie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował marqo87 25.01.2008, 01:00:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 10:11 |