Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Curl nie działa gdy w linku jest apostrof
mefistofeles
post
Post #1





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


W $url jest link tego typu:

  1. $url='http://www.domena.pl/i'am_bad
  2.  
  3. $ch_e=curl_init($url);
  4. define('USER_AGENT', 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.0.6');
  5. curl_setopt($ch_e, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($ch_e, CURLOPT_FOLLOWLOCATION, 1);
  7. curl_setopt($ch_e, CURLOPT_USERAGENT, USER_AGENT);
  8. curl_setopt($ch_e, CURLOPT_SSL_VERIFYPEER, FALSE);
  9. curl_setopt($ch_e, CURLOPT_SSL_VERIFYHOST, 2);
  10. curl_setopt($ch_e, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
  11. curl_setopt($ch_e, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
  12. $nazwa=curl_exec($ch_e);
  13. var_dump($nazwa);

Z przeglądarki ten adres działa, ale curl zwraca mi stronę z błędem 404.
Jak pozbyć się problemu z apostrofami w linkach?
Jakies escapowanie ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
pedro84
post
Post #2





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


To Ci powinno działać:

  1. $url='http://www.domena.pl/i\'am_bad';
Go to the top of the page
+Quote Post
mefistofeles
post
Post #3





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Rzeczywiście taki link działa, tylko teraz mam problem z zamienieniem ' na \'
Nie wiem czemu żadna z tych 2 opcji nie działa:

  1. $url = str_replace("'", "\'", $url);
  2.  
  3. $url = addslashes($url);


(IMG:style_emoticons/default/questionmark.gif)

Ten post edytował mefistofeles 18.04.2010, 11:17:54
Go to the top of the page
+Quote Post
Pawel_W
post
Post #4





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


człowieku, po co ty chcesz to zamieniać?

jeżeli adres jest zawsze taki sam to "wyeskejpuj" te apostrofy, a jeżeli nie to nie musisz nic robić...
Go to the top of the page
+Quote Post
mefistofeles
post
Post #5





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Napisałem po co chce to zamieniać.
Jak jest apostrof w linku to nie działa curl, jak go zamienie na sztywno na \' już jest ok, ale link jest zawsze inny
i chce zamić wszystkie ewentualne wystąpienia apostrofu na \' gdyż tylko wtedy działa ten skrypt, jednak nie wiem jak to zrobić.
Go to the top of the page
+Quote Post
luck
post
Post #6





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


  1. $url = "http://www.domena.pl/i'am_bad";
  2. $url = addslashes($url);
  3. echo $url;
To Ci nie może nie działać. Sprawdź 3 razy, czy na pewno używasz addslashes() dokładnie w ten sposób.
Go to the top of the page
+Quote Post
mefistofeles
post
Post #7





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Używam tego dokładnie w ten sposób.
echo wyświetla mi dokładnie taki sam link jak pierwotny i curl sobie z nim nie radzi :/
Go to the top of the page
+Quote Post
luck
post
Post #8





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Może wcześniej zmienna $url została potraktowana funkcją typu htmlentities? Sprawdź w źródle strony (w przeglądarce) czy cudzysłów wyświetla się tak jak tego chcesz.
Go to the top of the page
+Quote Post
mefistofeles
post
Post #9





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Nie używam htmlenties, ale w źródle po zastosowaniu adslashes rzeczywiście zamiast \' jest encja: & # 39;
Dlaczego ?

Ten post edytował mefistofeles 18.04.2010, 12:28:00
Go to the top of the page
+Quote Post
luck
post
Post #10





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Nie wiem dlaczego, ale skoro już tak jest to możesz najpierw przepuścić zmienną przez html_entity_decode.
Go to the top of the page
+Quote Post
mefistofeles
post
Post #11





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


  1. $url = addslashes($url);
  2. $url = html_entity_decode($url);


Nic to nie zmieniło, ciągle są encje ...
Go to the top of the page
+Quote Post
Pawel_W
post
Post #12





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


od myślenia głowa nie boli...
  1. $url = html_entity_decode($url);
  2. $url = addslashes($url);
Go to the top of the page
+Quote Post
mefistofeles
post
Post #13





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Dzięki za zaangażowanie, ale nic a nic to nie zmieniło niestety :/
Co za dziwna anomalia...
Go to the top of the page
+Quote Post
pedro84
post
Post #14





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


A możesz wrzucić cały plik? Może więcej kodu coś pokaże.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 04:15