Проблема скрипта

sanitarn
На сайте с 20.08.2007
Offline
199
753

Вообщем поставил я компонент на Joomla, сам сайт на кодировке ЦП, а компонент на УТФ8, как поправить скрипт на другую кодировку, в скрипте нашел только вот это упоминание кодировки УТФ:

/echo utf8_encode($hr[$horo_day]);//['P'];//kolio

while (!feof($rh)){

$str = iconv("CP1251", "UTF-8", fread($rh, 1024));

$str = str_replace('encoding="cp1251"','encoding="utf-8"',$str);

//$str = utf8_encode($str);

if (fwrite($wh, $str) === FALSE) {

// 'Download error: Cannot write to file ('.$file_target.')';

return true;

}

финансовый ответ (https://finansanswer.ru) Займ для безработных (https://finansanswer.ru/mikrozajmy/bezrabotnym/)
ewg777
На сайте с 04.06.2007
Offline
225
#1
sanitarn:
Вообщем поставил я компонент на Joomla, сам сайт на кодировке ЦП, а компонент на УТФ8, как поправить скрипт на другую кодировку, в скрипте нашел только вот это упоминание кодировки УТФ:
/echo utf8_encode($hr[$horo_day]);//['P'];//kolio
while (!feof($rh)){
$str = iconv("CP1251", "UTF-8", fread($rh, 1024));
$str = str_replace('encoding="cp1251"','encoding="utf-8"',$str);
//$str = utf8_encode($str);
if (fwrite($wh, $str) === FALSE) {
// 'Download error: Cannot write to file ('.$file_target.')';
return true;
}

file_get_contents в помощь (взамен всего этого), а вообще такой код надо сразу удалять.

sanitarn
На сайте с 20.08.2007
Offline
199
#2
ewg777:
file_get_contents в помощь (взамен всего этого), а вообще такой код надо сразу удалять.

Кстати оригинал скрипта вообще не работал, а этот хоть работает, но в другой кодировке.

file_get_contents - можно подробнее, что и для чего? )))

ewg777
На сайте с 04.06.2007
Offline
225
#3
sanitarn:
Кстати оригинал скрипта вообще не работал, а этот хоть работает, но в другой кодировке.
file_get_contents - можно подробнее, что и для чего? )))

Ваш кусок кода пытается прочитать данные и записать их. В php это можно реализовать встроенной функцией - file_get_contents и file_put_contents

sanitarn
На сайте с 20.08.2007
Offline
199
#4
ewg777:
Ваш кусок кода пытается прочитать данные и записать их. В php это можно реализовать встроенной функцией - file_get_contents и file_put_contents

Вкратце, скрипт берет гороскоп с другого сайта, мне нужно просто чтоб сама кодировка отображалась нормально, то что сам код кривой мне до лампы ильича, проблема в кодировки, как её поменять то?

wdsg
На сайте с 09.02.2009
Offline
31
#5

Покажите код от $rh = fopen(... и $wh = fopen(... Там писать - одна строка. Текущая реализация есть говнокод.

Проектирование и разработка сложных IT-систем. Вожусь с проблемными задачами.
sanitarn
На сайте с 20.08.2007
Offline
199
#6
wdsg:
Покажите код от $rh = fopen(... и $rw = fopen(... Там писать - одна строка.

function download($file_source, $file_target) {

$rh = fopen($file_source, 'rb');

$wh = fopen($file_target, 'wb');

if ($rh===false || $wh===false){

// error reading or opening file

return true;

}

while (!feof($rh)){

$str = iconv("cp1251", "cp1251", fread($rh, 1024));

$str = str_replace('encoding="cp1251"','encoding="cp1251"',$str);

//$str = utf8_encode($str);

if (fwrite($wh, $str) === FALSE) {

// 'Download error: Cannot write to file ('.$file_target.')';

return true;

}

}

fclose($rh);

fclose($wh);

// No error

return false;

}

function filemtime_remote($uri)

{

$uri = parse_url($uri);

$handle = @fsockopen($uri['host'],80);

if(!$handle)

return 0;

fputs($handle,"GET $uri[path] HTTP/1.1\r\nHost: $uri[host]\r\n\r\n");

$result = 0;

while(!feof($handle))

{

$line = fgets($handle,1024);

if(!trim($line))

break;

$col = strpos($line,':');

if($col !== false)

{

$header = trim(substr($line,0,$col));

$value = trim(substr($line,$col+1));

if(strtolower($header) == 'last-modified')

{

$result = strtotime($value);

break;

}

}

}

fclose($handle);

return $result;

}

ewg777
На сайте с 04.06.2007
Offline
225
#7
sanitarn:
function download($file_source, $file_target) {
$rh = fopen($file_source, 'rb');
$wh = fopen($file_target, 'wb');
if ($rh===false || $wh===false){
// error reading or opening file
return true;
}

while (!feof($rh)){
$str = iconv("cp1251", "cp1251", fread($rh, 1024));
$str = str_replace('encoding="cp1251"','encoding="cp1251"',$str);
//$str = utf8_encode($str);
if (fwrite($wh, $str) === FALSE) {
// 'Download error: Cannot write to file ('.$file_target.')';
return true;
}
}
fclose($rh);
fclose($wh);
// No error
return false;
}

function filemtime_remote($uri)
{
$uri = parse_url($uri);
$handle = @fsockopen($uri['host'],80);
if(!$handle)
return 0;

fputs($handle,"GET $uri[path] HTTP/1.1\r\nHost: $uri[host]\r\n\r\n");
$result = 0;
while(!feof($handle))
{
$line = fgets($handle,1024);
if(!trim($line))
break;

$col = strpos($line,':');
if($col !== false)
{
$header = trim(substr($line,0,$col));
$value = trim(substr($line,$col+1));
if(strtolower($header) == 'last-modified')
{
$result = strtotime($value);
break;
}
}
}
fclose($handle);
return $result;
}

И всё.

file_put_contents ($file_target, file_get_contents ($file_source));

А теперь укажите кодирвку Вашего сайта и сайта донора.

При условии поддержки http-обёртки

Такой (выше) вариант более универсален.

wdsg
На сайте с 09.02.2009
Offline
31
#8


function download($file_source, $file_target) {
if (copy($file_source, $file_target)) {
return false;
}
return true;
}

При условии поддержки http-обёртки и кодировки cp1251 везде.

[Удален]
#9
/echo utf8_encode($hr[$horo_day]);//['P'];//kolio
while (!feof($rh)){
$str = iconv("CP1251", "UTF-8", fread($rh, 1024));
$str = str_replace('encoding="cp1251"','encoding="utf-8"',$str);
//$str = utf8_encode($str);
if (fwrite($wh, $str) === FALSE) {
// 'Download error: Cannot write to file ('.$file_target.')';
return true;
}

ыыы. очередной зверь из зоопарка убежал =))))

кастрировать по яйцу за каждую строчку надо

sanitarn
На сайте с 20.08.2007
Offline
199
#10

ewg777,

Сайт в кодировке 1251, вот http://psycheia.ru/goroskop/index.php

Сайт Акцептор ХЗ, вот исходник находится всамом низу форума http://joomlaforum.ru/index.php?PHPSESSID=98c4f9dbbb9a095b84c0410a70799f11&topic=25871.90

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий