magpie: do some scrubbing on rss before parsing (patch from zoop@forums)
This commit is contained in:
parent
1efaefda1f
commit
68a89c301e
|
@ -1541,7 +1541,9 @@ function infobox_callback() {
|
||||||
var shadow = document.getElementById('infoBoxShadow');
|
var shadow = document.getElementById('infoBoxShadow');
|
||||||
if (box) {
|
if (box) {
|
||||||
|
|
||||||
new Draggable(shadow);
|
if (!is_safari()) {
|
||||||
|
new Draggable(shadow);
|
||||||
|
}
|
||||||
|
|
||||||
box.innerHTML=xmlhttp.responseText;
|
box.innerHTML=xmlhttp.responseText;
|
||||||
if (shadow) {
|
if (shadow) {
|
||||||
|
|
|
@ -279,6 +279,33 @@ function _fetch_remote_file ($url, $headers = "" ) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _convert_entities ($string) {
|
||||||
|
# Source: http://www.w3.org/TR/REC-html40/sgml/entities.html
|
||||||
|
$html_entities = array(
|
||||||
|
" ", "¡", "¢", "£", "¤", "¥", "¦", "§", "¨", "©",
|
||||||
|
"ª", "«", "¬", "­", "®", "¯", "°", "±", "²", "³",
|
||||||
|
"´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½",
|
||||||
|
"¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç",
|
||||||
|
"È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ",
|
||||||
|
"Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û",
|
||||||
|
"Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å",
|
||||||
|
"æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï",
|
||||||
|
"ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù",
|
||||||
|
"ú", "û", "ü", "ý", "þ", "ÿ",);
|
||||||
|
$numeric_entities = array(
|
||||||
|
" ", "¡", "¢", "£", "¤", "¥", "¦", "§", "¨", "©",
|
||||||
|
"ª", "«", "¬", "­", "®", "¯", "°", "±", "²", "³",
|
||||||
|
"´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½",
|
||||||
|
"¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç",
|
||||||
|
"È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ",
|
||||||
|
"Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û",
|
||||||
|
"Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å",
|
||||||
|
"æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï",
|
||||||
|
"ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù",
|
||||||
|
"ú", "û", "ü", "ý", "þ", "ÿ");
|
||||||
|
return str_replace($html_entities, $numeric_entities, $string);
|
||||||
|
}
|
||||||
|
|
||||||
/*=======================================================================*\
|
/*=======================================================================*\
|
||||||
Function: _response_to_rss
|
Function: _response_to_rss
|
||||||
Purpose: parse an HTTP response object into an RSS object
|
Purpose: parse an HTTP response object into an RSS object
|
||||||
|
@ -286,7 +313,8 @@ function _fetch_remote_file ($url, $headers = "" ) {
|
||||||
Output: parsed RSS object (see rss_parse)
|
Output: parsed RSS object (see rss_parse)
|
||||||
\*=======================================================================*/
|
\*=======================================================================*/
|
||||||
function _response_to_rss ($resp) {
|
function _response_to_rss ($resp) {
|
||||||
$rss = new MagpieRSS( $resp->results, MAGPIE_OUTPUT_ENCODING, MAGPIE_INPUT_ENCODING, MAGPIE_DETECT_ENCODING );
|
$converted_source = _convert_entities(mb_convert_encoding($resp->results, "UTF-8", mb_detect_encoding($resp->results)));
|
||||||
|
$rss = new MagpieRSS( $converted_source, MAGPIE_OUTPUT_ENCODING, "UTF-8", false);
|
||||||
|
|
||||||
// if RSS parsed successfully
|
// if RSS parsed successfully
|
||||||
if ( $rss and !$rss->ERROR) {
|
if ( $rss and !$rss->ERROR) {
|
||||||
|
|
Loading…
Reference in New Issue