crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Регулярные выражения QT, отображение HTML
bynet
  опции профиля:
сообщение 18.4.2008, 12:47
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вот сталкнулся с такой задачей, нуно написать HTML Браузер с помощью регулярных выражений.
Тоесть при вводе адреса получить его код и отобразить как браузер.

Вопрос : Как с помощью рег. выражений это организовать?

Хотябы на простом примере:
Ввел я адрес любого сайта, получил код , на том сайте была ссылочка(без звездочек)
<a* href='http://www.forum.crossplatform.ru/index.php?act=idx'>Форумы на CrossPlatform.RU</a*>
Как мне преобразовать её в сылку и какой лучше элемент редактирования использовать для отображения всего?

Сообщение отредактировал bynet - 18.4.2008, 12:49
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ViGOur
  опции профиля:
сообщение 18.4.2008, 14:48
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Все понял, что ты хочешь.
Все что тебе нужно это:
1. Скачать html страничку со всем ее содержимым в свою временную жиректорию.
2. Преобразовать ссылки вроде <a href='www.myhomepage.com/index.html'>Home page</a> в <a href='tempDir/index.html'>Home page</a>, с путями к картинкам и прочему барахлу то же самое.
3. Отобразить все это богатство в QTextEdit (смотри пример %QtDir%\examples\assistant\simpletextviewer)

Преобразование делать можно так:
// szExp = "<a href=\"http://www.myhomepage.com/([^\"]*)[^<>]*>([^<]+)</a>";
// szData = "<a href=\"http://www.myhomepage.com/index.php\">MyHomePage</a>";
void ReplaceRegText1( const QString szExp, QString &rszData)
{
    QRegExp rx( szExp, Qt::CaseInsensitive);
    int pos = rx.indexIn( rszData);
    while( ( pos = rx.indexIn( rszData, pos)) != -1)
    {
        QString szUrl = rx.cap( 1);
        QString szPattern = rszData.mid( pos, rx.matchedLength());
        QString szTmp = "tmpDir/" + szUrl;
        
        rszData.replace( szPattern, szTmp);
    }
}
где, в szExp ты сам подставляешь http://www.myhomepage.com/, так как знаешь домен, для ссылок другого вида добавь немного анализа... :)

Сообщение отредактировал Admin - 21.4.2008, 10:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 12:34