![]() |
![]() |
![]()
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: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 24.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za błyskawiczną odpowiedz, teraz wiem, że coś się dzieje, ale nadal jest problem:
Warning: file_get_contents($adres2): failed to open stream: No such file or directory in c:\usr\krasnal\www\marqo\kody4.php on line 14 file_get_contents() musi w moim przypadku zawierać adres, który zamieściłem wcześniej, tylko, że ten adres ulega zmianie podczas działania skryptu dlatego przypisałem go do zmiennej $adres2 i podałem jako argument: file_get_contents('$adres2'). Taka opcja niestety nie działa:( czy można coś z tym zrobić? Ten post edytował marqo87 24.01.2008, 15:11:40 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 2 Dołączył: 3.01.2007 Skąd: Żory Ostrzeżenie: (0%) ![]() ![]() |
file_get_contents($adres2) bez " ' " przed i po zmiennej $adres2
-------------------- Angielski dla specjalistów: www.anglobiznes.pl
Wydawnictwo językowe: www.eprofess.pl |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
(...) podałem jako argument: file_get_contents('$adres2'). Taka opcja niestety nie działa:( czy można coś z tym zrobić? Łańcuchy znaków (string) 1. Zwróć uwagę na różnicę pomiędzy ' a " 2. Pisanie czegoś takiego file_get_contents('$adres2') to błąd. Umieszczanie zmiennych w cudzysłowiach jest zbędne a często błędne. Wstaw sobie w linii 13 taki kod: a zobaczysz w czym problem |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 24.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Faktycznie już to poprawiłem i działa, ale do pewnego momentu:
Z tego co znalazłem na necie o funkcji ereg() wynika, że powinna ona wyszukać ciąg odpowiadający formie kodu pocztowego ('^([0-9]{2})(-[0-9]{3})? przypisanego zmiennej $ciag) w $kod (który zawiera wyniki poszukiwania kodów pocztowych dla danego miasta) i zapisać je w tablicy $tab. Potem przy użyciu count() sprawdzam ile elementów zawiera ta tablica, dzięki czemu moge wyświetlić jej zawartość kożystając z pętli for. Problem w tym, że &tab jest pusta. Ten post edytował marqo87 24.01.2008, 15:46:46 |
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
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 ![]()
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 ![]() Ten post edytował marqo87 25.01.2008, 01:00:11 |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
(...) a może istnieje jakaś funkcja, która sprawdza daną tablicę i usówa z niej powtarzające się wartości? To łatwo sprawdzić w manualu ![]() array_unique() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 24.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze raz wielkie dzięki!!! Teraz po małym tuningu dostaję to co chiałem. PS. w czasie studiowania na temat funkcji array_unique() znalazłem jeszcze jedno ciekawe rozwiązanie problemu duplikatów w tablicy:
Działa to w identyczny sposób, z tą różnicą, że tutaj nie trzeba tworzyć nowej tablicy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:49 |