[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос про кодировку
program90
Почему текст, который возвращается при запросе через curl, в результате выводится закодированным в utf-8?
Файл скрипта сохранен как cp1251.
Нужно, чтобы таблица, которая выводится под формой запроса выводилась закодированной в cp1251.
Может ли быть такое, что domxpath автоматически переводит из кодировки cp1251 в utf-8.
Результат, который возвращается через curl закодирован в cp1251.



<?php
session_start();
?>
<html>
<
head>
</
head>
<
body>
<?php

define ('SIZE', 3);

function clear_session()
{
unset($_SESSION['position'], $_SESSION['string'], $_SESSION['params']);
}

function put_to_buffer($array, $params)
{
if (is_array($array) && !empty($array) && !empty($params))
{
$string = serialize($array);
$_SESSION['string'] = $string;
$_SESSION['position'] = 0;
$_SESSION['params'] = $params;
}
}


function get_from_container($arr, $position, $length)
{
if ($position <= $length-1-SIZE)
$arr = array_slice($arr, $position, SIZE, TRUE);
elseif ($position <= $length-1 && $position > $length-1-SIZE)
$arr = array_slice($arr, $position, $length-$position, TRUE);
elseif ($position > $length-1)
return array();

return $arr;
}

function get_from_buffer($params)
{

if ($_SESSION['params'] == $params && isset($_SESSION['string']) && isset($_SESSION['position']))
{
$arr = unserialize($_SESSION['string']);
$position = $_SESSION['position'];
$count = count($arr);
$arr = get_from_container($arr, $position, $count);
if (!empty($arr))
$_SESSION['position'] += SIZE;
else
{
$_SESSION['position'] = 0;
return "Достигнут конец";
}
}

else
{
clear_session();
$arr = get_result($params);

if (empty($arr) || !is_array($arr) || count($arr[0]) == 1)
return "Нет результатов";
else
put_to_buffer($arr, $params);

$count = count($arr);
$arr = get_from_container($arr, 0, $count);
if (!empty($arr))
$_SESSION['position'] += SIZE;
}
return $arr;
}

function get_result($params)
{



$hostname = 'arenda-piter.ru';
$ch = curl_init('http://'.$hostname.'/strip/result.php');
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
curl_setopt ($ch, CURLOPT_REFERER, 'http://'.$hostname.'/workpage.php?page=search');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:'));
curl_exec($ch);
$result = curl_multi_getcontent($ch);
curl_close($ch);

//убрать из-за кодировки
//$result = iconv('windows-1251', 'utf-8', $result);




$doc = new DOMDocument;
$doc->loadHTML($result);
$xpath = new DOMXPath($doc);
$i = 0;
$j = 0;
$arr = array();
foreach($xpath->query("//table[@class='tbm_01']//tr[@class='trm_01' or @class='trm_02']/td") as $td){
if ($i > 14)
{
$i = 0;
$j++;
}
$arr[$j][$i] = $td->nodeValue;
$i++;
}


return $arr;
}

function make_url($arr)
{
foreach ($arr as $k => $v)
{
//$v = iconv('utf-8', 'windows-1251', $v);
$string .= "&".$k."=".urlencode($v);
}
$string = substr($string, 1);
return $string;
}

function show_table($arr)
{
echo "<table style='font-size:11px;'>";
foreach($arr as $a)
{
echo "<tr>";
foreach($a as $v)
echo "<td>".$v."</td>";
echo "</tr>";
}
echo "</table>";
}




$params = make_url($_POST);
$arr = get_from_buffer($params);



?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<
script type="text/javascript">
$(document).ready(function() {
<?php
$option_vals = "{";
if ($_POST['sdelka'] != "")
$option_vals .= "'sdelka': '".$_POST['sdelka']."',";

if ($_POST['obj'] != "")
$option_vals .= "'obj': '".$_POST['obj']."',";

if ($_POST['raion'] != "")
$option_vals .= "'raion': '".$_POST['raion']."',";

if ($_POST['metro'] != "")
$option_vals .= "'metro': '".$_POST['metro']."',";

$option_vals = substr($option_vals, 0, strlen($option_vals)-1);
$option_vals .= "}";
?>
var
option_vals = <?php echo $option_vals; ?>;
for(var k in option_vals)
{
if (option_vals[k] != "")
$('select[name="'+k+'"] option[value="'+option_vals[k]+'"]').attr('selected', 'selected');
}
alert(value);
});
</
script>

<
div class="container">
<
form style="margin: 0px; padding: 0px;" method="post" action="">
<
select class="sel" name="sdelka">
<
option value="">Категория</option>
<
option value="сдам">Сдают</option>
<
option value="сниму">Снимают</option>
<
option value="продам">Продают</option>
<
option value="куплю">Покупают</option>
</
select>

<
select class="sel" name="obj">
<
option value="">Выбрать объект</option>
<
option value="комната">комната(ы)</option>
<
option value="1к.кв.">.кв.</option>
<
option value="2к.кв.">.кв.</option>
<
option value="3к.кв.">.кв.</option>
<
option value="4к.кв.">.кв.</option>
<
option value="5к.кв.">.кв. и более</option>
<
option value="помещение">помещение</option>
<
option value="дом">дом</option>
<
option value="часть дома">часть дома</option>
<
option value="комплекс домов">комплекс домов</option>
<
option value="здание">здание</option>
<
option value="часть здания">часть здания</option>
<
option value="комплекс зданий">комплекс зданий</option>
<
option value="сооружение">сооружение</option>
<
option value="земельный участок">земельный участок</option>
<
option value="земельный массив">земельный массив</option>
</
select>

<
select class="sel" name="raion">
<
option value="">Выбрать район</option>
<
option value="">-----Санкт-Петербург----</option>
<
option value="Адмиралтейский">Адмиралтейский</option>
<
option value="Василеостровский">Василеостровский</option>
<
option value="Выборгский">Выборгский</option>
<
option value="Калининский">Калининский</option>
<
option value="Кировский">Кировский</option>
<
option value="Колпинский">Колпинский</option>
<
option value="Красногвардейский">Красногвардейский</option>
<
option value="Красносельский">Красносельский</option>
<
option value="Кронштадтский">Кронштадтский</option>
<
option value="Курортный">Курортный</option>
<
option value="Московский">Московский</option>
<
option value="Невский">Невский</option>
<
option value="Павловский">Павловский</option>
<
option value="Петроградский">Петроградский</option>
<
option value="Петродворцовый">Петродворцовый</option>
<
option value="Приморский">Приморский</option>
<
option value="Пушкинский">Пушкинский</option>
<
option value="Фрунзенский">Фрунзенский</option>
<
option value="Центральный">Центральный</option>
<
option value="">-----группы Районов----</option>
<
option value="0">Центр</option>
<
option value="1">Север</option>
<
option value="2">Север-Восток</option>
<
option value="3">Север-Юг</option>
<
option value="4">Юг</option>
<
option value="5">Юго-Восток</option>
<
option value="6">Юго-Запад</option>
<
option value="7">Все "Спальные"</option>
<
option value="8">Пригороды СПб</option>
<
option value="">-------ЛенОбласть-----</option>
<
option value="ЛО Бокситогорский">Бокситогорский</option>
<
option value="ЛО Волосовский">Волосовский</option>
<
option value="ЛО Волховский">Волховский</option>
<
option value="ЛО Всеволожский">Всеволожский</option>
<
option value="ЛО Выборгский">Выборгский</option>
<
option value="ЛО Гатчинский">Гатчинский</option>
<
option value="ЛО Кингисеппский">Кингисеппский</option>
<
option value="ЛО Киришский">Киришский</option>
<
option value="ЛО Кировский">Кировский</option>
<
option value="ЛО Лодейнопольский">Лодейнопольский</option>
<
option value="ЛО Ломоносовский">Ломоносовский</option>
<
option value="ЛО Лужский">Лужский</option>
<
option value="ЛО Подпорожский">Подпорожский</option>
<
option value="ЛО Приозерский">Приозерский</option>
<
option value="ЛО Сланцевский">Сланцевский</option>
<
option value="ЛО Тихвинский">Тихвинский</option>
<
option value="ЛО Тосненский">Тосненский</option>
<
option value="allObl">&#8594; Вся ЛенОбласть</option>
</select>

<
select class="sel" name="metro">
<
option value="">Выбрать метро</option>
<
option value="Автово">Автово</option>
<
option value="Академическая">Академическая</option>
<
option value="Ал.Невского пл.">Ал.Невского пл.</option>
<
option value="Балтийская">Балтийская</option>
<
option value="Большевиков пр.">Большевиков пр.</option>
<
option value="Василеостровская">Василеостровская</option>
<
option value="Владимирская">Владимирская</option>
<
option value="Волковская">Волковская</option>
<
option value="Восстания пл.">Восстания пл.</option>
<
option value="Выборгская">Выборгская</option>
<
option value="Горьковская">Горьковская</option>
<
option value="Гостиный Двор">Гостиный Двор</option>
<
option value="Гражданский пр.">Гражданский пр.</option>
<
option value="Девяткино">Девяткино</option>
<
option value="Достоевская">Достоевская</option>
<
option value="Дыбенко ул.">Дыбенко ул.</option>
<
option value="Елизаровская">Елизаровская</option>
<
option value="Звездная">Звездная</option>
<
option value="Звенигородская">Звенигородская</option>
<
option value="Кировский з-д">Кировский з-д</option>
<
option value="Комендантский пр.">Комендантский пр.</option>
<
option value="Крестовский остров">Крестовский остров</option>
<
option value="Купчино">Купчино</option>
<
option value="Ладожская">Ладожская</option>
<
option value="Ленинский пр.">Ленинский пр.</option>
<
option value="Лесная">Лесная</option>
<
option value="Лиговский пр.">Лиговский пр.</option>
<
option value="Ломоносовская">Ломоносовская</option>
<
option value="Маяковская">Маяковская</option>
<
option value="Московская">Московская</option>
<
option value="Московские ворота">Московские ворота</option>
<
option value="Нарвская">Нарвская</option>
<
option value="Невский пр.">Невский пр.</option>
<
option value="Новочеркасская">Новочеркасская</option>
<
option value="Обводный Канал">Обводный Канал</option>
<
option value="Обухово">Обухово</option>
<
option value="Озерки">Озерки</option>
<
option value="Парк Победы">Парк Победы</option>
<
option value="Парнас">Парнас</option>
<
option value="Петроградская">Петроградская</option>
<
option value="Пионерская">Пионерская</option>
<
option value="пл.Ленина">пл.Ленина</option>
<
option value="пл.Мужества">пл.Мужества</option>
<
option value="Политехническая">Политехническая</option>
<
option value="пр.Ветеранов">пр.Ветеранов</option>
<
option value="пр.Просвещения">пр.Просвещения</option>
<
option value="Приморская">Приморская</option>
<
option value="Пролетарская">Пролетарская</option>
<
option value="Пушкинская">Пушкинская</option>
<
option value="Рыбацкое">Рыбацкое</option>
<
option value="Садовая">Садовая</option>
<
option value="Сенная пл.">Сенная пл.</option>
<
option value="Спасская">Спасская</option>
<
option value="Спортивная">Спортивная</option>
<
option value="Старая Деревня">Старая Деревня</option>
<
option value="Технол. институт">Технол. институт</option>
<
option value="Удельная">Удельная</option>
<
option value="Фрунзенская">Фрунзенская</option>
<
option value="Черная речка">Черная речка</option>
<
option value="Чернышевская">Чернышевская</option>
<
option value="Чкаловская">Чкаловская</option>
<
option value="Электросила">Электросила</option>
</
select>
<
font class="font_div">от</font> <input type="text" value="<?php echo $_POST['plataOt'];?>" title="Укажите от какой суммы искать" name="plataOt" size="9" class="txt"> 
<font class="font_div">до</font> <input type="text" value="<?php echo $_POST['plataDo'];?>" title="Укажите до какой суммы искать" name="plataDo" size="9" class="txt"> <font class="font_div">руб</font>

<
input type="submit" class="sub" value="Найти и Показать »">
</
form>
</
div>
<?php

//print_r($arr);
if (!empty($arr) && is_array($arr))
show_table($arr);
elseif(is_string($arr))
echo($arr);

?>
</body>
</
html>




Спустя 18 часов, 15 минут, 37 секунд (7.01.2012 - 12:27) program90 написал(а):
Ответ ответ ответ

Спустя 22 минуты, 25 секунд (7.01.2012 - 12:49) inpost написал(а):
Есть же iconv , переводи полученные данные в твою кодировку.

Спустя 58 минут, 59 секунд (7.01.2012 - 13:48) program90 написал(а):
inpost
inpost
да, вчера получилось разобраться.
А тема эта и есть. Она не редактируется. Просто я бы хотел убрать код или часть. Потому что не хочу чтобы копия была в интернете, это дипломная работа.

Спустя 4 часа, 6 минут, 38 секунд (7.01.2012 - 17:55) inpost написал(а):
Я её могу редактировать легко, кнопки все есть. Необходимо больше информации по этому поводу.

Спустя 3 часа, 52 минуты, 3 секунды (7.01.2012 - 21:47) Ramzil_Nixon написал(а):
Цитата (program90 @ 6.01.2012 - 15:11)

<div class="container">
<form style="margin: 0px; padding: 0px;" method="post" action="">
<select class="sel" name="sdelka">
<option value="">Категория</option>
<option value="сдам">Сдают</option>
<option value="сниму">Снимают</option>
<option value="продам">Продают</option>
<option value="куплю">Покупают</option>
</select>

<select class="sel" name="obj">
<option value="">Выбрать объект</option>
<option value="комната">комната(ы)</option>
<option value="1к.кв.">1к.кв.</option>
<option value="2к.кв.">2к.кв.</option>
<option value="3к.кв.">3к.кв.</option>
<option value="4к.кв.">4к.кв.</option>
<option value="5к.кв.">5к.кв. и более</option>
<option value="помещение">помещение</option>
<option value="дом">дом</option>
<option value="часть дома">часть дома</option>
<option value="комплекс домов">комплекс домов</option>
<option value="здание">здание</option>
<option value="часть здания">часть здания</option>
<option value="комплекс зданий">комплекс зданий</option>
<option value="сооружение">сооружение</option>
<option value="земельный участок">земельный участок</option>
<option value="земельный массив">земельный массив</option>
</select>

<select class="sel" name="raion">
<option value="">Выбрать район</option>
<option value="">-----Санкт-Петербург----</option>
<option value="Адмиралтейский">Адмиралтейский</option>
<option value="Василеостровский">Василеостровский</option>
<option value="Выборгский">Выборгский</option>
<option value="Калининский">Калининский</option>
<option value="Кировский">Кировский</option>
<option value="Колпинский">Колпинский</option>
<option value="Красногвардейский">Красногвардейский</option>
<option value="Красносельский">Красносельский</option>
<option value="Кронштадтский">Кронштадтский</option>
<option value="Курортный">Курортный</option>
<option value="Московский">Московский</option>
<option value="Невский">Невский</option>
<option value="Павловский">Павловский</option>
<option value="Петроградский">Петроградский</option>
<option value="Петродворцовый">Петродворцовый</option>
<option value="Приморский">Приморский</option>
<option value="Пушкинский">Пушкинский</option>
<option value="Фрунзенский">Фрунзенский</option>
<option value="Центральный">Центральный</option>
<option value="">-----группы Районов----</option>
  <option value="0">Центр</option>
  <option value="1">Север</option>
  <option value="2">Север-Восток</option>
  <option value="3">Север-Юг</option>
  <option value="4">Юг</option>
  <option value="5">Юго-Восток</option>
  <option value="6">Юго-Запад</option>
  <option value="7">Все "Спальные"</option>
  <option value="8">Пригороды СПб</option>
<option value="">-------ЛенОбласть-----</option>
<option value="ЛО Бокситогорский">Бокситогорский</option>
<option value="ЛО Волосовский">Волосовский</option>
<option value="ЛО Волховский">Волховский</option>
<option value="ЛО Всеволожский">Всеволожский</option>
<option value="ЛО Выборгский">Выборгский</option>
<option value="ЛО Гатчинский">Гатчинский</option>
<option value="ЛО Кингисеппский">Кингисеппский</option>
<option value="ЛО Киришский">Киришский</option>
<option value="ЛО Кировский">Кировский</option>
<option value="ЛО Лодейнопольский">Лодейнопольский</option>
<option value="ЛО Ломоносовский">Ломоносовский</option>
<option value="ЛО Лужский">Лужский</option>
<option value="ЛО Подпорожский">Подпорожский</option>
<option value="ЛО Приозерский">Приозерский</option>
<option value="ЛО Сланцевский">Сланцевский</option>
<option value="ЛО Тихвинский">Тихвинский</option>
<option value="ЛО Тосненский">Тосненский</option>
<option value="allObl">→ Вся ЛенОбласть</option>
</select>

<select class="sel" name="metro">
<option value="">Выбрать метро</option>
<option value="Автово">Автово</option>
<option value="Академическая">Академическая</option>
<option value="Ал.Невского пл.">Ал.Невского пл.</option>
<option value="Балтийская">Балтийская</option>
<option value="Большевиков пр.">Большевиков пр.</option>
<option value="Василеостровская">Василеостровская</option>
<option value="Владимирская">Владимирская</option>
<option value="Волковская">Волковская</option>
<option value="Восстания пл.">Восстания пл.</option>
<option value="Выборгская">Выборгская</option>
<option value="Горьковская">Горьковская</option>
<option value="Гостиный Двор">Гостиный Двор</option>
<option value="Гражданский пр.">Гражданский пр.</option>
<option value="Девяткино">Девяткино</option>
<option value="Достоевская">Достоевская</option>
<option value="Дыбенко ул.">Дыбенко ул.</option>
<option value="Елизаровская">Елизаровская</option>
<option value="Звездная">Звездная</option>
<option value="Звенигородская">Звенигородская</option>
<option value="Кировский з-д">Кировский з-д</option>
<option value="Комендантский пр.">Комендантский пр.</option>
<option value="Крестовский остров">Крестовский остров</option>
<option value="Купчино">Купчино</option>
<option value="Ладожская">Ладожская</option>
<option value="Ленинский пр.">Ленинский пр.</option>
<option value="Лесная">Лесная</option>
<option value="Лиговский пр.">Лиговский пр.</option>
<option value="Ломоносовская">Ломоносовская</option>
<option value="Маяковская">Маяковская</option>
<option value="Московская">Московская</option>
<option value="Московские ворота">Московские ворота</option>
<option value="Нарвская">Нарвская</option>
<option value="Невский пр.">Невский пр.</option>
<option value="Новочеркасская">Новочеркасская</option>
<option value="Обводный Канал">Обводный Канал</option>
<option value="Обухово">Обухово</option>
<option value="Озерки">Озерки</option>
<option value="Парк Победы">Парк Победы</option>
<option value="Парнас">Парнас</option>
<option value="Петроградская">Петроградская</option>
<option value="Пионерская">Пионерская</option>
<option value="пл.Ленина">пл.Ленина</option>
<option value="пл.Мужества">пл.Мужества</option>
<option value="Политехническая">Политехническая</option>
<option value="пр.Ветеранов">пр.Ветеранов</option>
<option value="пр.Просвещения">пр.Просвещения</option>
<option value="Приморская">Приморская</option>
<option value="Пролетарская">Пролетарская</option>
<option value="Пушкинская">Пушкинская</option>
<option value="Рыбацкое">Рыбацкое</option>
<option value="Садовая">Садовая</option>
<option value="Сенная пл.">Сенная пл.</option>
<option value="Спасская">Спасская</option>
<option value="Спортивная">Спортивная</option>
<option value="Старая Деревня">Старая Деревня</option>
<option value="Технол. институт">Технол. институт</option>
<option value="Удельная">Удельная</option>
<option value="Фрунзенская">Фрунзенская</option>
<option value="Черная речка">Черная речка</option>
<option value="Чернышевская">Чернышевская</option>
<option value="Чкаловская">Чкаловская</option>
<option value="Электросила">Электросила</option>
  </select>


А не легче было все это в массив собрать?

Спустя 2 часа, 40 минут, 39 секунд (8.01.2012 - 00:28) program90 написал(а):
Цитата (inpost @ 7.01.2012 - 14:55)
Я её могу редактировать легко, кнопки все есть. Необходимо больше информации по этому поводу.


В принципе не обязательно убирать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.