PHP Obtener datos de una URL externa codificada en UTF-8


Si deseas cargar un HTML desde un servidor externo, no importa si buscas obtener contenido de una página con la metaetiqueta charset=”utf-8″, utilizamos la función file_get_contents() normalmente. Pero si no es utf-8, sino otro código como Shift_JIS u otro cualquiera, obtendrás algo similar a esto:

Obtener formato de error de contenido

Intenté tanto guardar el HTML en un archivo como mostrarlo con codificación UTF-8. No funcionó, lo que significa que file_get_contents() ya está devolviendo HTML dañado.

Esto no significa que file_get_contents() no funcione o que el sitio bloquee el contenido. El problema principal radica en la etiqueta de conjunto de caracteres [charset=Shift_JIS]. Para lidiar con esto, utilizo las funciones mb_detect_encoding (Detectar la codificación de caracteres) e iconv (Convertir una cadena a la codificación de caracteres solicitada). Por ejemplo, con el formato de fuente japonesa, después de codificar, obtendrás el siguiente resultado:

– Si necesitas reemplazar el enlace de una imagen, CSS, JavaScript, etc., puedes utilizar la función str_replace().

– Si deseas ser selectivo con cierto contenido, utiliza la función preg_match() para php mysql

Por ejemplo:

$url = ‘http://XXXXXXXXX/jp/cisco-webex-meetings-download.html’;
$htmlContent = file_get_contents($url);

$currentString = [‘<img src=”../../path/’];
$replaceString = [‘<img src=”http://your_url/’];
$newContent = str_replace($currentString, $replaceString, $htmlContent);

// handle with newContent…

// If you want to get the content in this table (table in td): ‘<table><tr><td><table border=0 cellpadding=2 cellspacing=0 align=center’

preg_match(‘/<\/table><tr><td><table border=0 cellpadding=2 cellspacing=0 align=center(.*?)<\/table>/s’, $htmlContent, $match);

// var_dump($match);
// echo $match[0];

/**
* Encoding
*/
function encoding($string) {
$currentEncoding = mb_detect_encoding($string, ‘auto’);
$result = iconv($currentEncoding, ‘UTF-8’, $string);
return $result;
}

echo encoding($match[0]);

Resultado PHP Obtener datos de una URL externa codificada en UTF-8:

Deja un comentario