Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
80 / 59 / 47
Регистрация: 27.11.2014
Сообщений: 359
1

Заменить теги в HTML-файле.

23.08.2015, 00:51. Просмотров 1609. Ответов 14
Метки нет (Все метки)


Добрый день форумчане, помогите нубу.
Код за меня не прошу писать, ну разве что, у вас завалялся похожий пример.
У меня трудности с пониманием потоков, поэтому даже начать задачу не могу.
Прошу подсказки, с чем в данном случае нужно работать?


Задача: Дан HTML файл. Все цитаты находятся в тегах <strong>. Необходимо заменить данный тег на тег <blockquote> и записать в новый HTML файл.

Я понимаю, что нужно открыть файл, прочесть, задать условие для смены текста, скопировать в новый файл и сохранить. Но как-то всё очень туго.

Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2015, 00:51
Ответы с готовыми решениями:

Заменить теги в файле с разметкой
Дано файл, в котором встречаются теги &lt;i&gt; и &lt;/ i&gt;. заменить каждое вхождение &quot;&lt;i&gt;&quot; на...

Как html теги заменить на нормальные символы?
Мне нужно,чтобы из строки убирались html теги Например я хочу,чтобы &lt; преобразовывалось в &amp;lt;, &gt;...

Заменить теги HTML другими тегами используя регулярные выражения
Доброе время суток. Подскажите пожалуйста, желательно с примером, как заменить теги HTML другими...

Заменить в тексте, вводимым пользователем, все HTML-сущности, исключая HTML5-теги
Доброе время суток!) надо заменить в тексте вводимый пользователем все html сущности, но при этом...

14
98 / 71 / 13
Регистрация: 15.12.2013
Сообщений: 453
23.08.2015, 03:32 2
причем тут потоки?
Вам парсер xml нужен.
Поищите libxml2 или как-то так, Cишная библиотека для парсинга xml.
Ну или могу свою дать, давно писал правда, но работает.
1
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
23.08.2015, 04:40 3
Цитата Сообщение от ASCII Посмотреть сообщение
причем тут потоки?
Я вот тоже в недоумении.

Цитата Сообщение от ASCII Посмотреть сообщение
Вам парсер xml нужен.
Не проще ли в данном случае просто заменить одно слово на второе?
0
98 / 71 / 13
Регистрация: 15.12.2013
Сообщений: 453
23.08.2015, 05:09 4
Причем тут простая замена? Таких слов в документе может встречаться много, в том числе и не в тех тегах, в которых надо заменять.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
23.08.2015, 05:20 5
Цитата Сообщение от ASCII Посмотреть сообщение
Причем тут простая замена? Таких слов в документе может встречаться много, в том числе и не в тех тегах, в которых надо заменять.
Много ли там таких <(...)strong(...)> слов? Даже если они есть в тексте скобки экранированы, вырежет только теги.
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
23.08.2015, 05:55 6
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Даже если они есть в тексте скобки экранированы, вырежет только теги.
Подстрока "<strong>" может быть частью содержимого тега <plaintext>. Так что libxml лучше заюзать.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
23.08.2015, 06:10 7
Enno, убедили, про такой не знал.
0
80 / 59 / 47
Регистрация: 27.11.2014
Сообщений: 359
23.08.2015, 12:06  [ТС] 8
Цитата Сообщение от ASCII Посмотреть сообщение
Причем тут простая замена? Таких слов в документе может встречаться много, в том числе и не в тех тегах, в которых надо заменять.
Я про потоки говорил, потому что как раз данную тему разбираем.
А вот про Cишную библиотеку для парсинга xml впервые слышу.
Я просто думал, это можно реализовать обычным кодом.

Ну или могу свою дать, давно писал правда, но работает.
Если не сложно, дай пожалуйста свою, попытаюсь разобраться.
0
98 / 71 / 13
Регистрация: 15.12.2013
Сообщений: 453
23.08.2015, 12:23 9
Вернусь домой, кину в лс
0
Эксперт PHP
2970 / 2495 / 1174
Регистрация: 14.05.2014
Сообщений: 7,050
Записей в блоге: 1
23.08.2015, 12:26 10
Цитата Сообщение от ASCII Посмотреть сообщение
причем тут потоки?
предполагаю, здесь про потоки ввода-вывода речь идет.
0
80 / 59 / 47
Регистрация: 27.11.2014
Сообщений: 359
23.08.2015, 15:22  [ТС] 11
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
предполагаю, здесь про потоки ввода-вывода речь идет.
Заранее извините за нубство, но очень хочу разобраться, тема для меня тёмный лес.
Ещё посидел покопался в msdn. И как я понял из подсказки про потоки ввода-вывода, тогда может это можно сделать по примеру потоков STL?
Посмотрите, начало должно быть такое?
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <fstream>
using namespace std;
const char *filename = "test.html";
int main() {
    ofstream ostr;
    ostr.open(filename);
    if (ostr) {
        for (int i = 0; i < ?????; i++) {
            ostr << ????? << endl;
сразу хотел уточнить, чтобы заменить теги, мы для начала должны узнать размер исходного файла?
а после должны запустить поиск по определенным критериям?
а после, переписать данные в новый файл, только с заменой нужных тегов?
а по итогу эти новые данные записать в новый, созданный ХТМЛ файл?
0
Эксперт PHP
2970 / 2495 / 1174
Регистрация: 14.05.2014
Сообщений: 7,050
Записей в блоге: 1
23.08.2015, 20:06 12
Лучший ответ Сообщение было отмечено Андрюшатина как решение

Решение

Андрюшатина,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <fstream>
 
int main()
{
    std::ifstream fin("page.html");
    std::ofstream fout ("page2.html");
    std::string line;
    std::string pattern = "strong>";
    std::string replacement = "blockquote>";
    std::string::size_type n;
    while (std::getline(fin, line))
    {
        n = 0;
        while ((n = line.find(pattern, n)) != std::string::npos)
        {
            line.replace(n, pattern.size(), replacement);
            n += replacement.size();
        }
        fout << line << std::endl;
    }
    
    return 0;
}
1
80 / 59 / 47
Регистрация: 27.11.2014
Сообщений: 359
23.08.2015, 23:14  [ТС] 13
Спасибо большое за помощь, можно небольшое уточнение спросить?
Не до конца понял, что делает 17 строка?
C++
1
 n += replacement.size();
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
24.08.2015, 08:12 14
Смещает позицию поиска на длину заменённого фрагмента (в данном случае "blockquote>").
0
836 / 494 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
24.08.2015, 17:17 15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <string>
#include <boost/regex.hpp>
 
int main ()
{
    std::ifstream in ("in.txt");
    std::ofstream out ("out.txt");
    std::string line;
    while (std::getline (in, line))
    {
        std::string temp;
        temp = boost::regex_replace (line, boost::regex ("<strong>"), "<blockquote>");
        temp = boost::regex_replace (temp, boost::regex ("</strong>"), "</blockquote>");
        out << temp << "\n";
    }
    return 0;
}
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2015, 17:17

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Абсолютные ссылки в html-файле заменить на относительные
как во входном html-файле отличить абсолютные ссылки, которые можно заменить на относительные?

Перевести обычный файл в HTML, добавив соответствующие HTML-теги
Задание состоит в том, что имеется файл текстовый, его нужно перевести в HTML, т.е. добавить тэги...

Html теги
Здравствуйте! Вопрос у меня простой.Я сам не полностью знаю все теги html. Есть ли в HTML тег,...

теги HTML
Всем привет.Подскажите пожалуйста какие теги вообще учить надо в HTML?!А то их очень много а люди...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.