|
| |
|
|
| |
для: zi
(01.10.2007 в 19:23)
| | | возник прикол после недельного тестирования
если по результатам запроса выдается более сотни найденных страниц и когда нажимаешь по ссылкам 1 2 3 4 5 6 7 8 9 10 11 ... (внизу страницы), появляется глюк
все страницы вроде нормально выводятся, а иногда 9, 10 выводятся пустыми, а 5, 6 могут быть на половину заполнены, т.е. вместо 10 ответов на странице пять шесть
причем каждый раз по разному
даже не знаю в чем глюк | |
| |
|
|
| |
|
|
| |
для: cheops
(30.09.2007 в 02:19)
| | | Спасибо за решение, однако у меня не пошло, поэтому я немного переписал:
http://localhost/ya.php?text=TEXT&p=1
$text = rawurlencode(stripslashes($_REQUEST["text"]));
$p = $_REQUEST["p"];
if(empty($p)) $p = 1;
echo "<font color=green>Страница - ".$p."</font>";
echo "Поиск по ключевому слову: ".$text."<hr>";
// Формируем ссылку для поиска
$url = "http://192.168.1.1:17000/?text=$text&p=$p&xml=yes";
// echo "<font color=blue>".$url."</font><hr>";
// Получаем результаты поиска
$xml = file_get_contents($url);
// Конвертируем полученные данные из кодировки UTF-8 в cp2151
$xml = iconv("UTF-8", "CP1251", $xml);
// echo "<font color=green>".$xml."</font><hr>";
// Извлекаем количество найденных документов(записей)
// Элемент $matches[0] будет содержать часть строки, соответствующую вхождению всего шаблона,
// $matches[1] - часть строки, соответствующую первой подмаске, и так далее.
preg_match("|<found priority=\"all\">(.*?)</found>|is", $xml, $out);
$total = $out[1];
echo "Найдено документов: ".$total."<hr>";
preg_match("|<reqid>(.*?)</reqid>|is", $xml, $reqid1);
$reqid = $reqid1[1];
// в <group> ... </group> хранятся строки с результатами поиска
preg_match_all("|<group>(.*?)</group>|is", $xml, $out);
// В цикле обрабатываем по очереди обработку данных из <group> ... </group>
for($i = 0; $i < count($out[1]); $i++)
{
preg_match("|<url>(.*?)</url>|is", $out[1][$i], $ur);
$url = $ur[1];
if(substr($url, 0, 5) == "webds")
{
$url = substr($url, 6);
// $url = "http://".htmlspecialchars_decode($url);
$url = "http://".htmlspecialchars($url);
}
// Получаем название(заголовок страницы) из <title>
preg_match("|<title>(.*?)</title>|is", $out[1][$i], $tl);
$title = $tl[1];
// Получаем описание из <headline>
preg_match("|<headline>(.*?)</headline>|is", $out[1][$i], $t2);
$headline = $t2[1];
// Получаем Дату и время модификации из <modtime>
preg_match("|<modtime>(.*?)</modtime>|is", $out[1][$i], $t3);
$modtime = $t3[1];
// Получаем ключевое влово из <passage>
preg_match_all("|<passage>(.*?)</passage>|is", $out[1][$i], $ps);
// ОФОРМЛЯЕМ ВЫВОД ПОЛУЧЕННОЙ ИНФОРМАЦИИ
// Выводим полученную информацию
echo "<a class=menuinfo target='_blank' href=$url>".$title."</a><br>";
echo $headline."<br>";
echo $url." ".$modtime ;
/*
for($j = 0; $j < count($ps[1]); $j++)
{
$ps[1][$j] = preg_replace("|<hlword[^>]+>(.*?)</hlword>|is", "<b>\\1</b>", $ps[1][$j]);
echo "<span class=texthelp>".$ps[1][$j]."</span><br>";
}
*/
echo "<br>";
unset($passage);
}
/*
if(!empty($_GET['error']))
{
echo "<pre>";
echo $xml;
echo "</pre>";
}
*/
echo "<br>";
$url = "text=$text&reqid=$reqid";
// Вывод страниц 1 2 3 4 5 6 7 8 9 10 11 ...
$j = 1;
if ($total > 10) {
for ($i = 1; $i < $total; $i++) {
if ($i % 10 == 0) {
echo "<a href=$_SERVER[PHP_SELF]?$url&p=$j>".$j."</a> ";
$j++;
}
}
}
echo "<br>";
|
| |
| |
|
|
| |
|
|
| |
для: zi
(27.09.2007 в 19:48)
| | | 2) Это можно сделать при помощи функции str_replace() | |
| |
|
|
| |
|
|
| |
для: zi
(27.09.2007 в 19:48)
| | | 1) Можно отталкиваться от следующего скрипта
// text - содержит поисковое слово
$text = rawurlencode(stripslashes($_REQUEST["text"]));
$p = $_REQUEST["p"];
if(empty($p)) $p = 1;
$url = "http://адрес_яндекс_сервера?text=$text&p=$p&xml=yes";
$xml = file_get_contents($url);
$xml = iconv("UTF-8", "CP1251", $xml);
// Извлекаем количество запросов
preg_match("|<found priority=\"all\">(.*?)</found>|is", $xml, $out);
$total = $out[1];
preg_match_all("|<group>(.*?)</group>|is", $xml, $out);
for($i = 0; $i < count($out[1]); $i++)
{
preg_match("|<url>(.*?)</url>|is", $out[1][$i], $ur);
$url = $ur[1];
if(substr($url, 0, 5) == "webds")
{
$url = substr($url, 6);
$url = "http://".htmlspecialchars_decode($url);
}
preg_match("|<title>(.*?)</title>|is", $out[1][$i], $tl);
$title = $tl[1];
preg_match_all("|<passage>(.*?)</passage>|is", $out[1][$i], $ps);
echo "<a class=menuinfo target='_blank' href=$url>".$title."</a><br>";
for($j = 0; $j < count($ps[1]); $j++)
{
$ps[1][$j] = preg_replace("|<hlword[^>]+>(.*?)</hlword>|is", "<b>\\1</b>", $ps[1][$j]);
echo "<span class=texthelp>".$ps[1][$j]."</span><br>";
}
echo "<br>";
unset($passage);
}
if(!empty($_GET['error']))
{
echo "<pre>";
echo $xml;
echo "</pre>";
}
// Выводим ссылки на другие страницы
$page_link = 1;
$numberthemes = 10;
$number = (int)($total/$numberthemes);
if((float)($total/$numberthemes)-$number != 0) $number++;
echo "<p class=texthelp>";
// Передаём параметры поиска
$url = "text=$text&id_forum=".$_GET['id_forum'];
if($p - $page_link > 1)
{
echo "<a title='Открыть страницу с темами' class=menuinfo href=$_SERVER[PHP_SELF]?$url&p=1> <nobr>[1-$numberthemes]</nobr></a> <em class=currentpage><nobr> ... </nobr> </em> ";
// Есть
for($i = $p - $page_link; $i<$p; $i++)
{
echo " <a title='Открыть страницу с темами' class=menuinfo href=$_SERVER[PHP_SELF]?$url&p=$i> <nobr>[".(($i - 1)*$numberthemes + 1)."-".$i*$numberthemes."]</nobr></a> ";
}
}
else
{
// Нет
for($i = 1; $i<$p; $i++)
{
echo " <a title='Открыть страницу с темами' class=menuinfo href=$_SERVER[PHP_SELF]?$url&p=$i> <nobr>[".(($i - 1)*$numberthemes + 1)."-".$i*$numberthemes."]</nobr></a> ";
}
}
// Проверяем есть ли ссылки справа
if($p + $page_link < $number)
{
// Есть
for($i = $p; $i<=$p + $page_link; $i++)
{
if($p == $i)
echo "<em class=currentpage><nobr> [".(($i - 1)*$numberthemes + 1)."-".$i*$numberthemes."] </nobr> </em>";
else
echo " <a title='Открыть страницу с темами' class=menuinfo href=$_SERVER[PHP_SELF]?$url&p=$i> <nobr>[".(($i - 1)*$numberthemes + 1)."-".$i*$numberthemes."]</nobr></a> ";
}
echo "<em class=currentpage><nobr> ... </nobr> </em> <a title='Открыть страницу с темами' class=menuinfo href=$_SERVER[PHP_SELF]?$url&p=$number> <nobr>[".(($number - 1)*$numberthemes + 1)."-$total]</nobr></a> ";
}
else
{
// Нет
for($i = $p; $i<=$number; $i++)
{
if($number == $i)
{
if($p == $i)
echo "<em class=currentpage><nobr> [".(($i - 1)*$numberthemes + 1)."-$total] </nobr></em>";
else
echo " <a title='Открыть последнюю страницу с темами' class=menuinfo href=$_SERVER[PHP_SELF]?$url&p=$i>[".(($i - 1)*$numberthemes + 1)."-$total]</a> ";
}
else
{
if($p == $i)
echo "<em class=currentpage><nobr> [".(($i - 1)*$numberthemes + 1)."-".$i*$numberthemes."] </nobr> </em>";
else
echo " <a title='Открыть страницу с темами' class=menuinfo href=$_SERVER[PHP_SELF]?$url&p=$i> <nobr>[".(($i - 1)*$numberthemes + 1)."-".$i*$numberthemes."]</nobr></a> ";
}
}
}
echo "</td></tr>";
echo "</table>";
|
| |
| |
|
|
| |
|
|
| |
для: zi
(26.09.2007 в 13:34)
| | | Хм... так и тут так делайте - в зависимости от типа пользователя, либо оставляйте код без изменений, либо заменяйте при помощи функции str_replace() строку "192.168.1.1:17000" на "ввв.сайт.ру". | |
| |
|
|
| |
|
|
| |
для: zi
(25.09.2007 в 01:16)
| | | Вопрос. Может ли мне кто-нибудь помочь:
1) С написанием парсера этого xml
2) С написанием второго парсера
с автоматической заменой выделенных частей жирным на http://ввв.сайт.ру
<url>webds/10.1.0.5/1.htm</url>
и точно так же эти выделенные части
<exturl>http://192.168.1.1:17000/hl?url=webds/10.1.0.5/1.htm&mime=text/html&charset=windows-1251</exturl>
<hlurl>http://192.168.1.1:17000/hl?url=webds/10.1.0.5/1.htm&mime=text/html&reqtext=news&text=news&charset=windows-1251&d=2797&hldoclist=http%3A//192.168.1.1%3A17000/%3Ftext%3Dnews%26xml%3Dyes</hlurl> | |
| |
|
|
| |
|
|
| |
для: cheops
(26.09.2007 в 10:52)
| | | Внутренние IP адреса начинаются с 10-тки
ip 10.*
маска 255.0.0.0
Обычно на сайте я делаю так - в зависимости кому предназначается информация
<?
if (($_SERVER["REMOTE_ADDR"] == "10.5.15.15") )
{$url="http://".$_SERVER["HTTP_HOST"].":84/";}
else
{$url="http://новости.сайт.ру";}
?>
<a href="<? echo $url; ?>" target="_blank">Новости<br>
|
| |
| |
|
|
| |
|
|
| |
для: zi
(25.09.2007 в 23:05)
| | | Нет, имеется в виду у пользователей в локальной сети какие IP-адреса? Или они все через прокси-сервер идут? | |
| |
|
|
| |
|
|
| |
для: cheops
(25.09.2007 в 11:28)
| | | Если пользователь лезит из локальной сети то адрес везде должен быть 10.1.0.5
например
<url>webds/10.1.0.5/Vysotzky.htm</url>
<exturl>http://192.168.1.1:17000/hl?url=webds/10.1.0.5/Vysotzky.htm&mime=text/html&charset=windows-1251</exturl>
<hlurl>http://192.168.1.1:17000/hl?url=webds/10.1.0.5/Vysotzky.htm&mime=text/html&reqtext=news&text=news&charset=windows-1251&d=2799&hldoclist=http%3A//192.168.1.1%3A17000/%3Ftext%3Dnews%26xml%3Dyes</hlurl>
|
если из интернета то - ввв.сайт.ру
<url>webds/ввв.сайт.ру/Vysotzky.htm</url>
<exturl>http://192.168.1.1:17000/hl?url=webds/ввв.сайт.ру/Vysotzky.htm&mime=text/html&charset=windows-1251</exturl>
<hlurl>http://192.168.1.1:17000/hl?url=webds/ввв.сайт.ру/Vysotzky.htm&mime=text/html&reqtext=news&text=news&charset=windows-1251&d=2799&hldoclist=http%3A//192.168.1.1%3A17000/%3Ftext%3Dnews%26xml%3Dyes</hlurl>
|
| |
| |
|
|
| |
|
|
| |
для: zi
(25.09.2007 в 01:16)
| | | Локальные адреса в какой диапазоне? Т.е. в случае локального пользователя, что нам вернёт переменная $_SERVER['REMOTE_ADDR']? | |
| |
|
|
|