/ / DOMDocument y codificación de windows-1250 - php, encoding, utf-8, domdocument

Codificación DOMDocument y windows-1250 - php, encoding, utf-8, domdocument

Entonces, estoy escribiendo el código que se supone que analiza diferentes sitios web, y algunos de ellos usan windows-1250 Codificación, y algunos de ellos usan "utf-8". No tengo ningún impacto sobre esos sitios web, y probablemente puedas adivinar que esas páginas con "windows-1250" me están causando dolor de cabeza. Entonces, aquí está el código que estoy usando:

    $doc = new DOMDocument();
@$doc->loadHTML($response);

$xpath = new DOMXpath($doc);
$anchors = $xpath->query("//a[@href]");
foreach( $anchors as $anchor) {
$href = $anchor->getAttribute("href");
$anchor->setAttribute("href", "http://example.com/");
}

$response = $xpath->document->saveHTML();

y aquí está la salida en el navegador cuando intento ejecutar este script:

Warning: DOMDocument::saveHTML(): output conversion failed due to conv error, bytes 0x9A 0x61 0x72 0x6B

Entonces, ¿hay alguna manera de manejar este error con la codificación "windows-1250", que también funcionará con utf-8? Traté de usar utf_encode con $response Y eso pasa, pero luego se desordenan los personajes internacionales.

Respuestas

0 para la respuesta № 1

Si solo está intentando cambiar el href de todas sus etiquetas de anclaje, entonces podría usar jquery

El código se vería así:

  //loop through the anchor tags
$("a").each(function(){//begin each function

//set the href attributes
$(this).attr("href","http://example.com/");


});//end each function

Aquí hay un ejemplo de jsfiddle: http://jsfiddle.net/fu5fxawm/1/

Si pasas el cursor sobre los enlaces, verás que se han cambiado.