Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перекодировщик utf8 - win1251 "захлебывается" - Fatal error: Cannot redeclare utf8_win()
 
 автор: Владимир55   (24.07.2007 в 16:15)   письмо автору
 
 

Поскольку работаю на Денвере, то функция перекодировки недоступна, а посему использовал перекодировщик из счетчика. Но вот чудеса - если просто вызываешь файл из броузера, то прекрасно работает, но если функция находится в цикле, то срабатывает только одни раз, а при втором обращении пишет: "Fatal error: Cannot redeclare utf8_win() (previously declared in w:\home\ssylky\www\analis.php:14) in w:\home\ssylky\www\analis.php on line 14".

Строка 14 - это и есть function utf8_win($s)

А код вот такой:


$s = file_get_contents("buff.txt");                   // Чтение выдачи Яндекса

// Перекодировка из utf8 в win1251

function utf8_win($s)
{
    $s=str_replace("\xD0\xB0","а",$s);  $s=str_replace("\xD0\x90","А",$s);
    $s=str_replace("\xD0\xB1","б",$s);  $s=str_replace("\xD0\x91","Б",$s);
    $s=str_replace("\xD0\xB2","в",$s);  $s=str_replace("\xD0\x92","В",$s);
    $s=str_replace("\xD0\xB3","г",$s);  $s=str_replace("\xD0\x93","Г",$s);
    $s=str_replace("\xD0\xB4","д",$s);  $s=str_replace("\xD0\x94","Д",$s);
    $s=str_replace("\xD0\xB5","е",$s);  $s=str_replace("\xD0\x95","Е",$s);
    $s=str_replace("\xD1\x91","ё",$s);  $s=str_replace("\xD0\x81","Ё",$s);
    $s=str_replace("\xD0\xB6","ж",$s);  $s=str_replace("\xD0\x96","Ж",$s);
    $s=str_replace("\xD0\xB7","з",$s);  $s=str_replace("\xD0\x97","З",$s);
    $s=str_replace("\xD0\xB8","и",$s);  $s=str_replace("\xD0\x98","И",$s);
    $s=str_replace("\xD0\xB9","й",$s);  $s=str_replace("\xD0\x99","Й",$s);
    $s=str_replace("\xD0\xBA","к",$s);  $s=str_replace("\xD0\x9A","К",$s);
    $s=str_replace("\xD0\xBB","л",$s);  $s=str_replace("\xD0\x9B","Л",$s);
    $s=str_replace("\xD0\xBC","м",$s);  $s=str_replace("\xD0\x9C","М",$s);
    $s=str_replace("\xD0\xBD","н",$s);  $s=str_replace("\xD0\x9D","Н",$s);
    $s=str_replace("\xD0\xBE","о",$s);  $s=str_replace("\xD0\x9E","О",$s);
    $s=str_replace("\xD0\xBF","п",$s);  $s=str_replace("\xD0\x9F","П",$s);
    $s=str_replace("\xD1\x80","р",$s);  $s=str_replace("\xD0\xA0","Р",$s);
    $s=str_replace("\xD1\x81","с",$s);  $s=str_replace("\xD0\xA1","С",$s);
    $s=str_replace("\xD1\x82","т",$s);  $s=str_replace("\xD0\xA2","Т",$s);
    $s=str_replace("\xD1\x83","у",$s);  $s=str_replace("\xD0\xA3","У",$s);
    $s=str_replace("\xD1\x84","ф",$s);  $s=str_replace("\xD0\xA4","Ф",$s);
    $s=str_replace("\xD1\x85","х",$s);  $s=str_replace("\xD0\xA5","Х",$s);
    $s=str_replace("\xD1\x86","ц",$s);  $s=str_replace("\xD0\xA6","Ц",$s);
    $s=str_replace("\xD1\x87","ч",$s);  $s=str_replace("\xD0\xA7","Ч",$s);
    $s=str_replace("\xD1\x88","ш",$s);  $s=str_replace("\xD0\xA8","Ш",$s);
    $s=str_replace("\xD1\x89","щ",$s);  $s=str_replace("\xD0\xA9","Щ",$s);
    $s=str_replace("\xD1\x8A","ъ",$s);  $s=str_replace("\xD0\xAA","Ъ",$s);
    $s=str_replace("\xD1\x8B","ы",$s);  $s=str_replace("\xD0\xAB","Ы",$s);
    $s=str_replace("\xD1\x8C","ь",$s);  $s=str_replace("\xD0\xAC","Ь",$s);
    $s=str_replace("\xD1\x8D","э",$s);  $s=str_replace("\xD0\xAD","Э",$s);
    $s=str_replace("\xD1\x8E","ю",$s);  $s=str_replace("\xD0\xAE","Ю",$s);
    $s=str_replace("\xD1\x8F","я",$s);  $s=str_replace("\xD0\xAF","Я",$s);
    return $s;
}

$out = utf8_win($s);

echo htmlspecialchars($out);

   
 
 автор: Unkind   (24.07.2007 в 16:22)   письмо автору
 
   для: Владимир55   (24.07.2007 в 16:15)
 

Потому что не надо пихать определение функции в цикл.

   
 
 автор: Владимир55   (24.07.2007 в 16:36)   письмо автору
 
   для: Unkind   (24.07.2007 в 16:22)
 

Спасибо!

Признаюсь, что очень хотел найти ошибку сам, и сделал множество экспериментов для поиска противоречий в скрипте, куда входит перекодировка. При этом был почти уверен, что ткнут меня во что угодно, но только не в запрет повторного определения функции...

   
 
 автор: Trianon   (24.07.2007 в 16:40)   письмо автору
 
   для: Владимир55   (24.07.2007 в 16:15)
 

Я тоже отлаживаюсь в денвере. Денвер - это лишь комплект инструментов, каждый из которых (в том числе и php) можно менять и настраивать (в том числе и добавлять нужные модули, конкретно - php_mbstring.dll) по общим для этих инструментов правилам.

Вы тоже можете поставить все нужные Вам модули.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования