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 № 1Si 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.