Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pobranie wartosci z adresu
Forum PHP.pl > Forum > Przedszkole
marek71_33
Mam taką funkcję

  1. function friendly_link($friendly)
  2. {
  3. preg_match_all( '/((?<==)[a-zA-Z0-9_-]*)|([a-zA-Z0-9_-]*(?=&))/' ,$friendly, $id, PREG_SET_ORDER);
  4. $id = array($id[0][0],$id[2][0],$id[4][0],$id[6][0],$id[8][0],$id[10][0],$id[12][0],$id[14][0],$id[16][0],$id[18][0]);
  5. $friendly = implode(",", $id);
  6. $friendly = preg_replace('/[,]{2,10}/', '', $friendly);
  7. return $friendly;
  8. }


ma ona zamieniać część adresu po znaku "?" to znaczy:
?a=4&id=5&e=67&p=100 ma zamienić na 4,5,67,100
Funkcja działa ale na stronie pokazuje się dłuuuuga lista błędów:
Notice: Undefined offset: 2 in C:\wamp\www\...\a.php on line 52 (.... itd aż do offset 18)
Notice: Undefined variable: id in C:\wamp\www\...\a.php on line 52

Próbowałem z parse_url i parse_str, ale kod
  1. function friendly_link($friendly)
  2. {
  3. $friendly = parse_url($friendly, PHP_URL_QUERY);
  4. $friendly = parse_str ($friendly, $tablica);
  5. $tab = array();
  6. foreach($tablica as $tab);
  7. return $tab;
  8. }

?a=4&id=5&e=67&p=100 zamienia na 4 czyli tylko pierwsza wartość

Czy ktoś może mi pomóc w tej sprawie? Siedzę nad tym i nie daje rady. A może jest inny sposób żeby osiągnąć taki efekt? Które rozwiązanie jest lepsze i gdzie jest błąd?
lord2105
edytuj plik php.ini i wyłącz raportowanie notice

Kod
error_reporting  =  E_ALL & ~E_NOTICE


Pozdrawiam
marek71_33
lord2105 edytować php.ini mogę na swoim kompie, ale nie serwerze na którym będę miał stronę.
lord2105
A takie buty haha.gif

To w kodzie strony wstaw:

  1. error_reporting(E_ALL & ~E_NOTICE);
marek71_33
lord2105 Uważam, że to nie jest rozwiązanie problemu tylko jego ukrywanie smile.gif
lord2105
Wiesz co oznaczają te błędy ? są to notki - nie żadne errory czy warningi tylko notki informujące cię że używasz indeksów tablic bez wcześniejszej ich deklaracji. Więc nie ukrywasz tutaj żadnego problemu. A jeżeli tak bardzo Ci zależy, żeby nie było notek to przepisz funkcje w ten sposób, by najpierw były deklaracje indeksów.
nospor
@lord2105 gadasz takie głupstwa aż strach to czytać smile.gif
NOTICE się pojawiają bo wyrażenie jest błędne i $id nie zawiera tablicy takiej jakiej autor oczekiwał. Ukrycie NOTICE w żaden sposób nie rozwiąze problemu więc nie wyskakuj z takimi poradami. Nawet w przyszlosci bo akurat wyswietlanie bledów na etapie produkcyjnym to bardzo wskazane miec włączone

@marek71_33 masz błędne wyrażenie. Nie ma czasu teraz ci go poprawić, ale udziele ci wskazówki
? to znak specjalny i nie mozna go w wyrazeniu od tak uzyc.
Musisz go poprzedzic \ czyli \?
Reszty wyrazenia nie sprawdzalem.
Poza tym, zaraz po wyrażeniu rób
var_dump($id)
by sprawdzic co ci wyrazenie zwrócilo
lord2105
@nospor wczytaj się uważnie w to co napisałem... miałem to samo na myśli co napisałeś Ty tongue.gif

Cytat
otki informujące cię że używasz indeksów tablic bez wcześniejszej ich deklaracji


Cytat
NOTICE się pojawiają bo wyrażenie jest błędne i $id nie zawiera tablicy takiej jakiej autor oczekiwał


Dla mnie to to samo, może źle to określiłem tongue.gif
nospor
Pierwsze i najgorsze co zrobiles to kazales wyłączyc "NOTKI" - już samo to to głupota. TO nie zadna notka, To pelno prawny blad, uznawany za php malo wazny, ale dla programisty mowi bardzo wiele, wiec pod zadnym pozorem nie mozna go wyłączac a pisac tak, by się nie wyswietlal smile.gif

Cytat
otki informujące cię że używasz indeksów tablic bez wcześniejszej ich deklaracji
a spowodowane to jest blednym wyrazeniem regularnym i te NOTKI o tym mowią. Ale ty kazesz je wyłączyc,zapomniec o problemie (a problem przeciez nadal jest, nawet z wylaczonymi NOTKAMI) i mowisz ze to jest to samo co ja mowie.... winksmiley.jpg
lord2105
1. Nie wpływa on na funkcjonowanie skryptu...
2. To był najszybszy sposób
3. Przyznaje masz racje smile.gif
nospor
Cytat
Nie wpływa on na funkcjonowanie skryptu...
No tak, E-WARNING tez nie wlywa na funkcjonowanie skryptu... wywal i wyswietlanie tego.... no weź przestan takie rzeczy gadac bo jeszcze ktoś cie poslucha
lord2105
hehe dobra koniec tematu smile.gif
Poddaje się tongue.gif
marek71_33
Zmieniam to wyrażenie i zmieniam i wychodzą coraz większe bzdury

Czy ktoś mi pomoże rozwiązać problem? Bo nie daje rady
lord2105
polecam regex_generator
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.