Файл скрипта сохранен как 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к.кв.">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>
<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
да, вчера получилось разобраться.
А тема эта и есть. Она не редактируется. Просто я бы хотел убрать код или часть. Потому что не хочу чтобы копия была в интернете, это дипломная работа.
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) |
Я её могу редактировать легко, кнопки все есть. Необходимо больше информации по этому поводу. |
В принципе не обязательно убирать.