ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList

Страниц (3): « 1 2 [3]

> Найдено сообщений: 44
Furax Отправлено: 14 мая 2009 — 02:32 • Тема: Как сделать, чтобы работало с двойными кавычками? • Форум: PHP/Perl

Ответов: 5
Просмотров: 5532
Универсально? Вот так, например:
CODE:
'|<img(.*)\ssrc=("([^"]*)")|(\'([^\']*)\')[^>]*>|is'
Вроде должно так и так работать, проверь.
Furax Отправлено: 13 мая 2009 — 03:14 • Тема: Как сделать, чтобы работало с двойными кавычками? • Форум: PHP/Perl

Ответов: 5
Просмотров: 5532
Вот этот регэксп:
CODE:
"|<img(.*) src='([^']*)'[^>]*>|is"
Меняем на
CODE:
'|<img(.*) src="([^"]*)"[^>]*>|is'
Furax Отправлено: 6 мая 2009 — 01:05 • Тема: Вопросы по JavaScript • Форум: JavaScript

Ответов: 93
Просмотров: 74096
CODE:
function removeLines(Div, Lines)
{
while (Lines > 0)
{
if (!Div.firstChild)
return;

if (Div.firstChild.tagName == 'BR')
--Lines;

Div.removeChild(Div.firstChild);
}
}
Furax Отправлено: 21 апреля 2009 — 13:17 • Тема: Popup но только один раз • Форум: PHP/Perl

Ответов: 3
Просмотров: 4101
Можно на том же JS завести cookie-запись "попап показан" и потом проверять:

CODE:
function fireMyPopup() {
if (document.cookie.indexOf('popupShown=true') != -1)
return;
document.cooke='popupShown=true;expires='+(new Date((new Date()).getTime()+1000*60*60*24*365)).toGMTString();
//Дальше весь код fireMyPopup()...
Furax Отправлено: 7 апреля 2009 — 09:33 • Тема: RSS в html • Форум: HTML

Ответов: 12
Просмотров: 10605
Или PHP...
Furax Отправлено: 10 марта 2009 — 08:00 • Тема: Парсер программы ТВ. как сделать? • Форум: PHP/Perl

Ответов: 7
Просмотров: 7935
Код? Код парсера можно написать, например, так:
CODE:
for ($channel = strpos($text, 'http://www.vida.ru/blob/Channel/logo/'); $channel !== FALSE; $channel = strpos($text, 'http://www.vida.ru/blob/Channel/logo/', $channel+1))
{
$nameStart = strpos($text, 'alt="', $channel)+5;
$name = addSlashes(substr($text, $nameStart, strpos($text, '"', $nameStart)-$nameStart));

$result = mysql_query("SELECT `id` FROM `channels` WHERE `name`= '$name' LIMIT 1");
if (mysql_num_rows($result) == 0)
continue;
else
$id = mysql_result($result, 0);

$programBegin = strpos($text, '<table', $channe+1);
$programEnd = strpos($text, '</table', $programBegin);

for ($timeBegin = strpos($text, '<b>', $programBegin); $timeBegin && $timeBegin < $programEnd; $timeBegin = strpos($text, '<b>', $timeBegin+1))
{
$timeEnd = strpos($text, '</b>', $timeBegin);
$time = addSlashes(substr($text, $timeBegin+3, $timeEnd-$timeBegin-3));

$entryBegin = strpos($text, 'underline">', $timeEnd)+11;
$entry = addSlashes(substr($text, $entryBegin, strpos($text, '\n', $entryBegin)-$entryBegin));

mysql_query("INSERT INTO `programs` (`id`, `channel`, `date`, `time`, `name`) VALUES (NULL, $id, $date, '$time', '$entry')");
}
}
Предполагается, что $date и $text уже заданы и в них уже лежат, соответственно, дата, программа за которую парсится (в том виде, в котором она должна быть отправлена в базу данных), и непосредственно возвращённый Vidой HTML-код.

Код не отлаживал, возможны ошибки, но суть, я думаю, понятна.
Furax Отправлено: 10 марта 2009 — 03:43 • Тема: Парсер программы ТВ. как сделать? • Форум: PHP/Perl

Ответов: 7
Просмотров: 7935
С БД как раз проще. Я бы предложил завести пару таблиц: в одной хранить названия (можно отдельно те, что на Vida.ru и те, что надо выводить - не суть) и даты обновления программ интересующих нас каналов. Во второй - программы: канал (id из первой таблицы), дата, время, название программы.

Когда происходит обращение к странице, запрашиваем даты обновления тех каналов, которые хотим вывести. Если они совпадают с сегодняшней - просто запрашиваем из базы программу на нужный день и выводим. Если не совпадают - начинаем хитрить.

Во-первых, удаляем из базы вчерашние (и позавчерашние, и т. д.) программы; во-вторых, грузим ту же Vidу.Ru (возможно, не одну страницу) и начинаем парсить. С этим, вроде бы, тоже особых проблем нет.

В цикле парсим канал за каналом. Для этого находим, к примеру, очередную строку
CODE:
http://www.vida.ru/blob/Channel/logo/
Эта строка, вроде бы, встречается только в начале программы каждого из каналов. После этого выдёргиваем имя канала - между
CODE:
alt="
И
CODE:
"
Если это имя отсутствует в базе - этот канал нас не интересует, переходим к следующему. Затем парсим записи программы - они будут между
CODE:
<table
И
CODE:
</table
Время находится между
CODE:
<b>
И
CODE:
</b>
Название передачи - между
CODE:
style="color:black; text-decoration: underline">
И концом строки. С тем, чтобы добавить записи в базу, проблем быть не должно.

Разумеется, если на сайте сменится дизайн, парсер придётся переписать.

Сортировать записи при выводе надо не по времени, а по очерёдности добавления в базу (id), потому что телевизионщики имеют обыкновение относить то, что до шести утра, как правило, к вчерашнему дню.
Furax Отправлено: 8 марта 2009 — 13:43 • Тема: Парсер программы ТВ. как сделать? • Форум: PHP/Perl

Ответов: 7
Просмотров: 7935
Defenderyk
Для начала давай определимся, что Ты хочешь получить: просто HTML-код таблицы с той страницы или же разобранные по каналам и времени телепередачи? И есть ли база данных?
Furax Отправлено: 8 марта 2009 — 04:26 • Тема: Парсер программы ТВ. как сделать? • Форум: PHP/Perl

Ответов: 7
Просмотров: 7935
Вообще, на этом конкретно сайте свой код достаточно неплохой: картинки цепляются по абсолютным адресам. В этой ситуации самое простое, что можно сделать, - это посмотреть, между какими характерными наборами тегов встречается сама таблица с программой, и выхватывать её целиком, вставляя на свою страницу в виде того же исходного кода. А стили поменять всегда можно через CSS. Это если возиться особо неохота.

Если же нужно именно выдернуть саму программу, то это гораздо труднее. Начать, опять же, можно с выдирания таблицы целиком, а затем уже начать эту таблицу разбирать, выдирая то имя канала, то программы.

И, разумеется, не стоит забывать о кэшировании, а то могут просто забанить.
Furax Отправлено: 5 марта 2009 — 10:33 • Тема: Debug_Console • Форум: JavaScript

Ответов: 9
Просмотров: 6360
Defenderyk
Для отладки JavaScriptов незаметно от пользователя - чтобы не пугать посетителей alertами.

Александр Михалицын
systemnik.net.ru/debug_console.js - самое простое, что приходит в голову.
Furax Отправлено: 5 марта 2009 — 04:10 • Тема: Debug_Console • Форум: JavaScript

Ответов: 9
Просмотров: 6360
Александр Михалицын
Сделал бы путь покороче-покрасивее, а оттуда редирект.
Furax Отправлено: 1 марта 2009 — 04:43 • Тема: Выделение коротких слов • Форум: PHP/Perl

Ответов: 9
Просмотров: 7574
Это сделать можно, к примеру, вот так:
CODE:
$words = "Word1 'word2\\nNewLine' word3 'word\\'4' word5 ''";

echo preg_replace("/'(([^'\\\\]|(\\\\.))*)'/", '<font color="red">\'$1\'</font>', $words);
Поскольку выражение сложное, расшифрую: читаем открывающую кавычку; затем любые символы, кроме кавычек и бэкслэшей; если же напоролись на бэкслэш - читаем его и следующий символ после него (не глядя); в конце читаем закрывающую кавычку. Бэкслэш в регулярном выражении приходится отбивать ажно тремя бэкслэшами: один - из-за того, что он в регулярке, и ещё по одному перед каждым из тех двух - потому что регулярка в строке.

Если звёздочку заменить на плюсик - кавычки, между которыми нет ни одного символа, обрабатываться не будут.
Furax Отправлено: 23 февраля 2009 — 04:31 • Тема: Выделение коротких слов • Форум: PHP/Perl

Ответов: 9
Просмотров: 7574

Кстати, всегда было интересно: а откуда вообще берётся это ограничение снизу на длину слов в поисковом запросе?
Furax Отправлено: 22 февраля 2009 — 06:04 • Тема: Выделение коротких слов • Форум: PHP/Perl

Ответов: 9
Просмотров: 7574
Во-первых, кавычки вокруг регулярного выражения и строки замены лучше бы поставить одинарные, чтобы интерпретатор не пытался подставить туда спецсимволы '\b' и переменную $1.

А замену независимо от локали можно сделать так:
CODE:
echo preg_replace('/([^a-zA-Zа-яА-Я]|^)([a-zA-Zа-яА-Я]{1,3})(?![a-zA-Zа-яА-Я])/', '$1<font color="red">$2</font>', 'я ты он она форум подфорум поиск мод');

Страниц (3): « 1 2 [3]

Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0526]     [ ]