diff --git a/ecrire/inc_sites.php3 b/ecrire/inc_sites.php3 index f2788cd21c0187b955d33aa4cdedb4cc09edce5f..e247038aef6976eecc34586cde781507902fbc0b 100644 --- a/ecrire/inc_sites.php3 +++ b/ecrire/inc_sites.php3 @@ -759,10 +759,17 @@ function analyser_backend($rss, $url_syndic='') { // chercher auteur/lang dans le fil au cas ou les items n'en auraient pas list($header) = preg_split(',<(item|entry)[:[:space:]>],', $rss, 2); - if (preg_match(',<((dc:)?(author|creator))>(.*)</\1>,Uims',$header,$regs)) { - $les_auteurs_du_site = trim($regs[4]); - if (preg_match(',<name>(.*)</name>,Uims', $les_auteurs_du_site, $regs)) - $les_auteurs_du_site = $regs[1]; + if (preg_match_all( + ',<((dc:)?(author|creator))>(.*)</\1>,Uims', + $header, $regs, PREG_SET_ORDER)) { + $les_auteurs_du_site = array(); + foreach ($regs as $reg) { + $nom = trim($reg[4]); + if (preg_match(',<name>(.*)</name>,Uims', $nom, $reg)) + $nom = $reg[1]; + $les_auteurs_du_site[] = $nom; + } + $les_auteurs_du_site = join(', ', $les_auteurs_du_site); } if (preg_match(',<((dc:|[^>]*xml:)lang(uage)?)>([^<>]+)</\1>,i', $header, $match)) @@ -839,12 +846,18 @@ function analyser_backend($rss, $url_syndic='') { AND $lastbuilddate < time()) $data['lastbuilddate'] = $lastbuilddate; - // Auteur - if (preg_match(',<((dc:)?(author|creator))>(.*)</\1>,Uims',$item,$regs)){ - $data['lesauteurs'] = trim($regs[4]); - if (preg_match(',<name>(.*)</name>,Uims', - $data['lesauteurs'], $regs)) - $data['lesauteurs'] = $regs[1]; + // Auteur(s) + if (preg_match_all( + ',<((dc:)?(author|creator))>(.*)</\1>,Uims', + $item, $regs, PREG_SET_ORDER)) { + $auteurs = array(); + foreach ($regs as $reg) { + $nom = trim($reg[4]); + if (preg_match(',<name>(.*)</name>,Uims', $nom, $reg)) + $nom = $reg[1]; + $auteurs[] = $nom; + } + $data['lesauteurs'] = join(', ', $auteurs); } else $data['lesauteurs'] = $les_auteurs_du_site;