Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z $_GET, nieprawidłowo przekazuje dane
XnIcRaM
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 18.01.2009

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


mam sobie w link
Kod
<A href="mojskrypt.php?link=http://adres.strony.w.naz+wie.ma.spacje">Link</a>

po wczytaniu strony i najechaniu na link widzę iż wygląda on dokładnie tak jak w źródle, jednak jak go kliknę i odpali się mojskrypt.php, ktorego jedynym zadaniem jest wyświetlenie linku i pobranie za pomocą curl zawartości strony przekazanego metodą GET linku, jednak jakie bylo moje zdziwenie jak wywołanie w skrypcie mojskrypt.php
  1. <?php
  2. echo $_GET['link']
  3. ?>
wyświetla się jako:
Kod
http://adres.astrony.w.naz wie.ma.spacje

a powinno być
Kod
http://adres.astrony.w.naz+wie.ma.spacje
pewnie zbytnio bym się nie przejął, gdyby nie to że curl zwraca mi bład jesli w linku nie ma + zamiast spacji. Co może być przyczyną mojego problemu?

Ten post edytował XnIcRaM 25.01.2009, 01:06:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Jeśli do linków wrzucasz tekst, to standardowo użyj:
http://pl.php.net/manual/pl/function.urlencode.php

Gdy odbierasz link, gdzie mogą być stringi, to standardowo użyj poprzez analogię:
http://pl.php.net/manual/pl/function.urldecode.php

Przykłady i komentarze w manualu.
Go to the top of the page
+Quote Post
XnIcRaM
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 18.01.2009

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


czy to jest jedyna możliwość? bo trochę mocno komplikuje mi to sprawę, bo ja bezpośrednio nie dodaje linków, bo to jest tak, że pobieram zawartość jakiejś strony za pomocą curl i zakładając że zawartość mam w zmiennej $zawartosc to robie z tym cos takiego
  1. <?php
  2. $zawartosc = str_replace('href="http://','href="info.php?link=',zawartosc[1]);
  3. ?>


i po tej operacji wyrzucam zawartość jako źródło mojej strony, teraz aby użyć urlencode musiałbym zbudować jakieś wyrażenie regularne które by znalazło wszystkie linki i je odpowiednio potraktowały, jednak nie potrafie zbudować takiego wyrażenia, znaczy potrafie znaleźć
  1. <?php
  2. preg_match('|href=http://(.+?)/">|',$zawartosc)
  3. ?>
ale jak z tego zrobić odpowiednio preg_match_replace, czyli żeby to co znalazł zamienił na urlencode(znalezione) to nie mam pojęcia.
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
ale jak z tego zrobić odpowiednio preg_match_replace, czyli żeby to co znalazł zamienił na urlencode(znalezione) to nie mam pojęcia.

Modyfikator e: O ile pamiętam, to coś takiego:
  1. <?php
  2. $zawartosc = preg_replace('|href=http://(.+?)/">|sie', 'urlencode("1")',$zawartosc);
  3. ?>


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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 Aktualny czas: 19.08.2025 - 17:55