Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z $_GET
Forum PHP.pl > Forum > Przedszkole
XnIcRaM
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?
Pilsener
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.
XnIcRaM
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.
erix
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. ?>
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.