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

Форум PHP

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

 

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

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

тема: Перекодировать TXT и вывести на страницу HTML
 
 автор: Saprankov   (31.10.2008 в 16:27)   письмо автору
 
 

Привет, друзья:) Нужна ваша помощь. Была задача постранично выводить содержимое файла в формате TXT на HTML-страницу. Цель достигнута, всё работает, но содержимое текстовика на кириллице (windows-1251), а страница в кодировке UTF-8. Естественно, в результате видим кракозябры. :( Как "на лету" перекодировать выводимый текст? Куда и какую функцию вставить? Вот код страницы:

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Title here!</title>
</head>
<body>

<?php
$array = file('./mail.txt');
$count = count($array);
$list = 10;

if (empty($_GET['page'])) {
$page = 1;
} else {
$page = (int) $_GET['page'];
}

$j = ($count-1)-(($page-1)*$list);
$i = $j-$list;

for(; $i<$j && $j>=0; $j--) {
echo $array[$j];
}
echo '<font color="#ffffff" size="5">Страницы:&nbsp;</font>'."\n";
$all = ceil($count/$list);
for ($i=1;$i<=$all;$i++) {
if ($page==$i) {
echo '<strong><font color="#ffffff">'.$i.'</font></strong> ';
} else {
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i.'</a> '."\n";
}
}
?>

</body>
</html>


Буду признателен за любую помощь.

  Ответить  
 
 автор: sim5   (31.10.2008 в 16:35)   письмо автору
 
   для: Saprankov   (31.10.2008 в 16:27)
 

И кроме этого "текстовика" ничего более на странице? Тогда проще указать кодировку 1251. А если перекодировать, то iconv();

  Ответить  
 
 автор: Saprankov   (31.10.2008 в 16:41)   письмо автору
 
   для: sim5   (31.10.2008 в 16:35)
 

Совершенно верно, больше ничего :) Кодировку win-1251 указать не могу, ибо данная кодировка не воспринимается большинством мобильников, а у меня сайт гибридный - и для компов и для телефонов. С iconv экспериментировал, безрезультатно пока. :( Укажите кусок кода, куда её вставить, пожалуйста.

  Ответить  
 
 автор: sim5   (31.10.2008 в 16:47)   письмо автору
 
   для: Saprankov   (31.10.2008 в 16:41)
 

А чего там эксперементировать:
iconv("windows-1251","UTF-8",$имя переменной которая содержит текст)
Так понятно?)

  Ответить  
 
 автор: Saprankov   (31.10.2008 в 16:49)   письмо автору
 
   для: sim5   (31.10.2008 в 16:47)
 

Понятно больше половины :) Сэнкс, отпишусь.

  Ответить  
 
 автор: Saprankov   (31.10.2008 в 17:52)   письмо автору
 
   для: Saprankov   (31.10.2008 в 16:49)
 

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

  Ответить  
 
 автор: Saprankov   (31.10.2008 в 18:08)   письмо автору
 
   для: Saprankov   (31.10.2008 в 17:52)
 

sim5 , спасибо, уже разобрался :)))

  Ответить  
 
 автор: sim5   (31.10.2008 в 18:14)   письмо автору
 
   для: Saprankov   (31.10.2008 в 17:52)
 

Ну, например, вот здесь:
echo '<font color="#ffffff" size="5">' . iconv("windows-1251","UTF-8","Страницы") . ':&nbsp;</font>'."\n";
Далее у вас выводится переменная $i, что это у вас не знаю, похоже на навигатор - для нее замените "Страницы" на $i. Где у вас сам текст выводится что-то не понятно, кроме как текста в ссылках. Обрамляйте код свой при вставке в форум тегами [сode][/сode] с указанием РНР тегов, код ваш будет подсвечен, его будет легче читать.

  Ответить  
 
 автор: Saprankov   (31.10.2008 в 20:12)   письмо автору
 
   для: sim5   (31.10.2008 в 18:14)
 

Ага, понял. Вот решение моей задачи (может, кому пригодится):

<?php
$array 
file('./mail.txt');    //загоняем текстовик в массив
$count count($array);   //считаем строки
$list  10;

if (empty(
$_GET['page'])) {
    
$page 1;
} else {
    
$page = (int) $_GET['page'];
}

$j = ($count-1)-(($page-1)*$list);
$i $j-$list;

for(; 
$i<$j && $j>=0$j--) {
    echo 
iconv("windows-1251","UTF-8",$array[$j]);     //выводим перекодированные строки
}
echo 
'<font color="#ffffff" size="3">Страница№:&nbsp;</font>'."\n";
$all ceil($count/$list);
for (
$i=1;$i<=$all;$i++) {
    if (
$page==$i)    {
        echo 
'<strong><font color="#ffffff">'.$i.'</font></strong> ';
    } else {
        echo 
'<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i.'</a> '."\n";
    }
}
?>

  Ответить  
Rambler's Top100
вверх

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