Регистрация    Забыли пароль?        Правила форума    FAQ (читать перед созданием новой темы)
Имя   Пароль  запомнить
  
Просмотр темы
Вернуться на сайт: PHP-Fusion SF Russian Support Site

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Моды/Плагины | Плагины/Plugins
# 1 Тема: Rss и разные кодировки
crueltytanya
Пользователь

Avatar пользователя



Местный

Сообщений: 20
Зарегистрирован: 13 Ноября 2008, 07:37:55
Сказали спасибо 0 раз
Статус: offline
Опубликовано 05 Декабря 2009, 10:17:29
Дело вот в чем. Стоит плагин RSS, все rss ленты в utf-8, а сайт в win-1251. И тогда получается вот что:
''
Нашла код:

<?php
error_reporting(0);
if($_GET['url']){
$handle = @fopen($_GET['url'], "r" ) ;
if (!$handle) {header("HTTP/1.0 404 Not Found" ); exit; }
$content = '';
while (!feof($handle)) {
$content .= fread($handle, 8192);
}
fclose($handle);
preg_match('/<\?.+?encoding="(.+?)"/msi', $content, $match);
if($match[1] && strcasecmp($match[1], "utf-8" ) != 0 && strcasecmp($match[1], "utf8"smiley != 0){
$content = preg_replace("/$match[1]/", "utf-8", $content, 1) ;
if($match[1] == "windows-1251" )
$content = win3utf($content);
else
$content = @iconv($match[1], "utf-8", $content);
}
header("Content-Type: text/xml; charset=utf-8" );
echo $content;
exit;
}
function win3utf($s) {
for($i=0, $m=strlen($s); $i<$m; $i++) {
$c=ord($s[$i]);
if ($c<=127) {$t.=chr($c); continue; }
if ($c>=192 && $c<=207) {$t.=chr(208).chr($c-48); continue; }
if ($c>=208 && $c<=239) {$t.=chr(208).chr($c-48); continue; }
if ($c>=240 && $c<=255) {$t.=chr(209).chr($c-112); continue; }
//if ($c==184) { $t.=chr(209).chr(209); continue; };
if ($c==184) { $t.=chr(209).chr(145); continue; };
if ($c==168) { $t.=chr(208).chr(129); continue; };
}
return $t;
}
?>



А как его применить понятия не имею. Подскажите как его можно использовать, а то совсем пхп не знаю.
Нашла это здесь. Помогите пожалуйста.
 
^ наверх ^
# 2  
Dysha
Пользователь

Avatar пользователя

PHP Fusion 6.01.19.4

Любитель Fusion

Сообщений: 158
Откуда: Кузбасс
Зарегистрирован: 21 Апреля 2008, 11:24:11
Сказали спасибо 9 раз
Статус: offline
ICQ статус 374267256
Опубликовано 05 Декабря 2009, 11:40:27
Найди в коде все строки, которые содержат в себе кодировку utf-8 и замени её на windows-1251!


--------------------
Едет веб-мастер на поезде и слышит: <td>...</td>, <td>...</td>, <td>...</td>
^ наверх ^ 374267256 http://krap-edu.ru
1 пользователь сказал спасибо Вам: crueltytanya
# 3  
crueltytanya
Пользователь

Avatar пользователя



Местный

Сообщений: 20
Зарегистрирован: 13 Ноября 2008, 07:37:55
Сказали спасибо 0 раз
Статус: offline
Опубликовано 14 Декабря 2009, 03:46:55
Попробую. Спасибо огромное!!!! smiley
 
^ наверх ^
# 4  
crueltytanya
Пользователь

Avatar пользователя



Местный

Сообщений: 20
Зарегистрирован: 13 Ноября 2008, 07:37:55
Сказали спасибо 0 раз
Статус: offline
Опубликовано 14 Декабря 2009, 04:32:58
В плагине не указана кодировка. Это сами ленты в этой кодировке. Что делать. Скажите как можно применить код для перехода с одной кодировки на другую. Код в первом сообщении. Кода его сунуть???
 
^ наверх ^
# 5  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 14 Декабря 2009, 05:25:21
iconv конвертит как бэ.
Нужно только чтоб оно верно работало и все будет.


--------------------
Retired
^ наверх ^
# 6  
crueltytanya
Пользователь

Avatar пользователя



Местный

Сообщений: 20
Зарегистрирован: 13 Ноября 2008, 07:37:55
Сказали спасибо 0 раз
Статус: offline
Опубликовано 16 Декабря 2009, 12:34:43
А можно, пожалуйста, немного подробнее что, куда и как. А то совсем не понимаю. smiley


[Изменил(а) crueltytanya, 16 Декабря 2009, 12:35:00]  
^ наверх ^
# 7  
crueltytanya
Пользователь

Avatar пользователя



Местный

Сообщений: 20
Зарегистрирован: 13 Ноября 2008, 07:37:55
Сказали спасибо 0 раз
Статус: offline
Опубликовано 21 Декабря 2009, 04:30:04
Эх, ну подскажите, пожалуйста, как можно все таки применить этот код или предложите какую - нибудь альтернативу.

<?php
error_reporting(0);
if($_GET['url']){
$handle = @fopen($_GET['url'], "r" ) ;
if (!$handle) {header("HTTP/1.0 404 Not Found" ); exit; }
$content = '';
while (!feof($handle)) {
$content .= fread($handle, 8192);
}
fclose($handle);
preg_match('/<\?.+?encoding="(.+?)"/msi', $content, $match);
if($match[1] && strcasecmp($match[1], "utf-8" ) != 0 && strcasecmp($match[1], "utf8"smiley != 0){
$content = preg_replace("/$match[1]/", "utf-8", $content, 1) ;
if($match[1] == "windows-1251" )
$content = win3utf($content);
else
$content = @iconv($match[1], "utf-8", $content);
}
header("Content-Type: text/xml; charset=utf-8" );
echo $content;
exit;
}
function win3utf($s) {
for($i=0, $m=strlen($s); $i<$m; $i++) {
$c=ord($s[$i]);
if ($c<=127) {$t.=chr($c); continue; }
if ($c>=192 && $c<=207) {$t.=chr(208).chr($c-48); continue; }
if ($c>=208 && $c<=239) {$t.=chr(208).chr($c-48); continue; }
if ($c>=240 && $c<=255) {$t.=chr(209).chr($c-112); continue; }
//if ($c==184) { $t.=chr(209).chr(209); continue; };
if ($c==184) { $t.=chr(209).chr(145); continue; };
if ($c==168) { $t.=chr(208).chr(129); continue; };
}
return $t;
}
?>


 
^ наверх ^
# 8  
iceberg
Пользователь

Avatar пользователя



Завсегдатый

Сообщений: 57
Зарегистрирован: 24 Августа 2009, 19:14:36
Сказали спасибо 2 раз
Статус: offline
Опубликовано 21 Декабря 2009, 06:27:30
замени везде где видишь , что написано utf-8 на win-1251 в этом файле. Файл откроешь в блокноте.


[Изменил(а) iceberg, 21 Декабря 2009, 06:29:40]

--------------------
А ты такой холодный ...
^ наверх ^
# 9  
crueltytanya
Пользователь

Avatar пользователя



Местный

Сообщений: 20
Зарегистрирован: 13 Ноября 2008, 07:37:55
Сказали спасибо 0 раз
Статус: offline
Опубликовано 26 Декабря 2009, 11:41:32
Данное предложение уже поступало, но дело в том что это не файл rss, это файл для того чтобы адаптировать rss ленты в utf в win-1251, проблема в том, что я не знаю как применить этот код, вставить его в сам файл rss, либо создать новый файл с этим кодом и связать его с rss файлом. Как редактировать файлы я знаю.


[Изменил(а) crueltytanya, 26 Декабря 2009, 11:42:31]  
^ наверх ^
Перейти на форум:


95,537,995 уникальных посетителей
сейчас: 03 Мая 2024, 20:42:43
Генерация страницы: 0.24 сек.