Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] file_get_contents, polskie znaki w domenie
Forum PHP.pl > Forum > Przedszkole
marcinek37
Mój kod:
  1. <?
  2. ini_set('display_errors','1');
  3.  
  4. $html = file_get_contents('http://www.rząd.pl/');
  5. echo $html;
  6. ?>


pokazują się błędy:
Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Nieznany host. in D:\Programy\WebServ\httpd-users\nauka\index.php on line 5
Warning: file_get_contents(http://www.rząd.pl/) [function.file-get-contents]: failed to open stream: No error in D:\Programy\WebServ\httpd-users\nauka\index.php on line 5

Wiem, że to wina rego, że w adresie jest podany polski znak. Próbowałem go konwertować za pomocą mb_convert_encoding z UTF8 na HTML-ENTITIES, jednak to nic nie dało. Co mogę zrobić? Szukałem w Google i dwie osoby miały podobny problem i obie nie uzyskały odpowiedzi...
Mackos
Hej, może to głupio zabrzmi ale sprawdziłeś czy na pewno plik php masz zapisany w UTF-8 bez BOM ?
zegarek84
  1. $html = file_get_contents(idn_to_ascii('http://www.rząd.pl/'));
  2. echo $html;

idn_to_ascii
(PHP 5 >= 5.3.0, PECL intl >= 1.0.2, PECL idn >= 0.1)
idn_to_ascii — Convert domain name to IDNA ASCII form.
marcinek37
problem rozwiązany, już mówię, jak to się robi (nie na wszystkich serwerach działa idn_to_ascii)

1. http://phlymail.com/en/downloads/idna-convert.html - trzeba to pobrać
2. potem użyć kodu:
  1. <?php
  2. header('Content-Type: text/html; charset=utf-8');
  3. require_once('idna_convert.class.php');
  4. $link = 'http://www.rząd.pl/';
  5. $IDN = new idna_convert('2008');
  6. $encoded = $IDN->encode($link);
  7. echo htmlentities($encoded, null, 'UTF-8');
  8. ?>
fate
powinieneś dostać +
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.