mirror of
https://git.friendi.ca/friendica/friendica.git
synced 2025-06-17 05:25:15 +02:00
better handling of troublesome feeds.
This commit is contained in:
parent
178362e50b
commit
793967a1d3
7 changed files with 62 additions and 27 deletions
42
boot.php
42
boot.php
|
@ -1478,7 +1478,9 @@ function lrdd($uri) {
|
|||
return array();
|
||||
|
||||
logger('lrdd: host_meta: ' . $xml, LOGGER_DATA);
|
||||
$h = simplexml_load_string($xml);
|
||||
|
||||
$h = parse_xml_string($xml);
|
||||
|
||||
$arr = convert_xml_element_to_array($h);
|
||||
|
||||
if(isset($arr['xrd']['property'])) {
|
||||
|
@ -1550,16 +1552,19 @@ function lrdd($uri) {
|
|||
$headers = $a->get_curl_headers();
|
||||
logger('lrdd: headers=' . $headers, LOGGER_DEBUG);
|
||||
|
||||
require_once('library/HTML5/Parser.php');
|
||||
$dom = @HTML5_Parser::parse($html);
|
||||
// don't try and parse raw xml as html
|
||||
if(! strstr($html,'<?xml')) {
|
||||
require_once('library/HTML5/Parser.php');
|
||||
$dom = @HTML5_Parser::parse($html);
|
||||
|
||||
if($dom) {
|
||||
$items = $dom->getElementsByTagName('link');
|
||||
foreach($items as $item) {
|
||||
$x = $item->getAttribute('rel');
|
||||
if($x == "lrdd") {
|
||||
$pagelink = $item->getAttribute('href');
|
||||
break;
|
||||
if($dom) {
|
||||
$items = $dom->getElementsByTagName('link');
|
||||
foreach($items as $item) {
|
||||
$x = $item->getAttribute('rel');
|
||||
if($x == "lrdd") {
|
||||
$pagelink = $item->getAttribute('href');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1638,7 +1643,7 @@ function fetch_xrd_links($url) {
|
|||
return array();
|
||||
|
||||
logger('fetch_xrd_links: ' . $xml, LOGGER_DATA);
|
||||
$h = simplexml_load_string($xml);
|
||||
$h = parse_xml_string($xml);
|
||||
$arr = convert_xml_element_to_array($h);
|
||||
|
||||
$links = array();
|
||||
|
@ -2759,3 +2764,18 @@ function lang_selector() {
|
|||
$o .= '</select></form></div>';
|
||||
return $o;
|
||||
}}
|
||||
|
||||
|
||||
if(! function_exists('parse_xml_string')) {
|
||||
function parse_xml_string($s) {
|
||||
if(! strstr($s,'<?xml'))
|
||||
return false;
|
||||
$s2 = substr($s,strpos($s,'<?xml'));
|
||||
libxml_use_internal_errors(true);
|
||||
$x = @simplexml_load_string($s2);
|
||||
if(count(libxml_get_errors()))
|
||||
foreach(libxml_get_errors() as $err)
|
||||
logger('libxml: parse: ' . $err, LOGGER_DATA);
|
||||
libxml_clear_errors();
|
||||
return $x;
|
||||
}}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue