2
0
forked from Wavyzz/dolibarr

Ajout fonction qui vrifie si le flux rss est en utf8

This commit is contained in:
Regis Houssin
2006-07-25 15:37:32 +00:00
parent 7875613355
commit 6c9de8772a

View File

@@ -91,7 +91,15 @@ class box_external_rss extends ModeleBoxes {
{
$item = $rss->items[$i];
$href = $item['link'];
$title = utf8_decode(urldecode($item['title']));
$result = $this->utf8_check(urldecode($item['title']));
if ($result)
{
$title = utf8_decode(urldecode($item['title']));
}
else
{
$title = (urldecode($item['title']));
}
$title=ereg_replace("([[:alnum:]])\?([[:alnum:]])","\\1'\\2",$title); // G<>re probl<62>me des apostrophes mal cod<6F>e/d<>cod<6F>e par utf8
$title=ereg_replace("^\s+","",$title); // Supprime espaces de d<>but
$this->info_box_contents["$href"]="$title";
@@ -102,6 +110,27 @@ class box_external_rss extends ModeleBoxes {
'target' => 'newrss');
}
}
/**
* \brief V<>rifie si le flux est en UTF8
* \param $Str chaine <20> v<>rifier
*/
function utf8_check($Str) {
for ($i=0; $i<strlen($Str); $i++) {
if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb
elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb
elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb
elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb
elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb
elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b
else return false; # Does not match any model
for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80))
return false;
}
}
return true;
}
function showBox()
{