Foros del Web » Programando para Internet » PHP »

fopen() y url especiales

Estas en el tema de fopen() y url especiales en el foro de PHP en Foros del Web. Buenas a todo y ante todo gracias por vuestra ayuda. Uso Windows 7, Wamp, Apache/2.4.2 ,PHP/5.4.3. Mi problema es que necesito usar dicha funcion (fopen()) ...
  #1 (permalink)  
Antiguo 05/04/2013, 05:43
 
Fecha de Ingreso: marzo-2012
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
fopen() y url especiales

Buenas a todo y ante todo gracias por vuestra ayuda.

Uso Windows 7, Wamp, Apache/2.4.2 ,PHP/5.4.3.

Mi problema es que necesito usar dicha funcion (fopen()) sobre algunas urls pero cuando se tratan de algunas especiales como es mi caso obtengo este error:

Warning: fopen(): php_network_getaddresses: getaddrinfo failed: Host desconocido.

Cuando hablo de url especiales me refiero a las que contienen caracteres poco usuales. La url con la cual obtenga problemas es "http://www.in-niederösterreich.at/", como s epuede ver contiene "ö", con otras url me funciona perfectamente.

Trabajo en una empresa Alemana y constantemente veo cosas asi y dan problemillas.

Mi codigo:

Código PHP:
Ver original
  1. $link = 'http://www.in-niederösterreich.at/';
  2.  
  3. if ($userdatei = fopen($link,"r"))
  4. {
  5.     $i = 0;
  6.     $source = '';
  7.     while(!feof($userdatei))
  8.     {
  9.         $zei = fgets($userdatei, 915292);
  10.         $suche = array('ä', 'Ä', 'ö', 'Ö', 'ü', 'Ü', 'ß', ',', ' ', '&', '-', ':','/', '&', 'ä', 'Ä','ö', 'Ö', 'ü', 'Ü', 'ß', "\r\n");
  11.         $ersetze = array('ä', 'Ä', 'ö', 'Ö', 'ü', 'Ü', 'ß', ',', ' ', '&', '-', ':', '/', '&', 'ä', 'Ä', 'ö', 'Ö', 'ü', 'Ü', 'ß', "");
  12.         $source[$i] = str_replace($suche, $ersetze, $zei);
  13.         $i++;
  14.     }
  15.     fclose($userdatei);
  16. }

Espero puedan ayudarme, gracias.

Última edición por xRubenXuz; 05/04/2013 a las 05:49
  #2 (permalink)  
Antiguo 05/04/2013, 05:53
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: fopen() y url especiales

Busca en el manual de php información sobre funciones como htmlspecialchars() y a ver si te funciona.
  #3 (permalink)  
Antiguo 05/04/2013, 05:55
 
Fecha de Ingreso: marzo-2012
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Respuesta: fopen() y url especiales

Lo he probado ya, tmb htmlentities, codificando la url y decodificando lo ultimo que he probado es agragar h
Código PHP:
Ver original
  1. header('Content-type: text/html; charset=UTF-8');
para que el enlace se viera correctamente, sin respuesta positiva ninguna de estas opciones.

Gracias por la pronta repsuesta.
  #4 (permalink)  
Antiguo 05/04/2013, 06:04
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: fopen() y url especiales

urlencode() o rawurlencode()
Esq son las soluciones más rápidas y sencillas, si no habrá que buscar otra
  #5 (permalink)  
Antiguo 05/04/2013, 06:06
 
Fecha de Ingreso: abril-2013
Ubicación: Sevilla
Mensajes: 23
Antigüedad: 11 años
Puntos: 0
Respuesta: fopen() y url especiales

Hola
prueba si te sirviera la funcion dns_get_record para obtener la ip en base al dominio, nunca la he probado y por lo visto solo funciona en plataforma linux

la idea es, ya que no puedes conectar por el nombre del host intentarlo por la ip

http://ar.php.net/manual/es/function.dns-get-record.php

otra opcion seria intentarlo con cURL

suerte
  #6 (permalink)  
Antiguo 05/04/2013, 06:09
 
Fecha de Ingreso: marzo-2012
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Respuesta: fopen() y url especiales

zalito12, tmb he probado esas funciones pero gracias.

Sevillacode, implemente esa funcion pero no supe implementarla, me enfocare un poco mas en ella ya que suena bastante acertada, ya comentare mis impresiones. Ahora salgo del trabajo, lo hare desde casa.

Gracias a todos por contestar, si lo soluciono escribire como lo logre.

Etiquetas: especiales, fopen, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:14.