Грамотная замена текста



  • Доброе время суток
    Пишу парсер статей c сайта, однако в самих статьях есть ссылки (<a>) и эмоджи (<img>). Сама статья уже находится в переменной. Пример статьи:

    <img class="emoji" src="/emoji/e/f09f94a5.png" alt="🔥"> Mazda назвала цену на свой первый электромобиль Компания Mazda назвала цену на свой первый электромобиль – MX-30. Правда, касается она лишь спецверсии (модели первого издания) и лишь одного рынка. Тем не менее, эта цифра дает как минимум примерную картину того, сколько будет стоить электрокар Mazda MX-30. Новинка стартует с рынка Великобритании, здесь за автомобиль в версии First Edition будут просить от 30 495 фунтов стерлингов ($39 340). Таким образом, свою первую "электричку" Мазда оценили на уровне других бюджетных электрокаров последних поколений. Новый MX-30 оснащен электродвигателем, обеспечивающим 143 л.с. и 264 Нм, а также АКБ емкостью 35,5 кВтч, которой хватает на преодоление расстояния в 200 км по циклу WLTP. Пробег довольно небольшой, однако в Мазде заявляют, что для городского авто больше и не надо: в среднем европейские жители проезжают по 50 км в день. Кроме того, это частично компенсируется быстрой зарядкой: через чарджер мощностью 50 кВт батарею можно зарядить до 80% за 30–40 минут. Стандартное оснащение Mazda MX-30 First Edition также включает в себя проекционный дисплей, круиз-контроль, мультимедиа с Apple CarPlay и Android Auto, электрорегулировки водительского сиденья в 8-и позициях, а также настенное зарядное устройство для дома. Кроме того, за доплату доступна пара эксклюзивных цветов кузова по цене 1,2 тыс. и 1,6 тыс. долларов.  <a href="ссылка">#SEAT</a> <a href="ссылка">#АВТО</a> <a href="ссылка">#НОВОСТИ</a> <a href="ссылка">#worldnewscars</a> <a href="ссылка">#автомобили</a> <a href="ссылка">#спорт</a>
    

    Как можно поправить/заменить текст что бы текст обошелся без потерь? Заранее спасибо.



  • @mmaxsmile А что именно поправить? И что заменить?



  • @f0cus заменить html код, где ссылки оставить просто текст, а там где эмоджи только то что в атрибуте alt



  • @mmaxsmile заменить в смысле убрать? Так и писали бы убрать теги оставить текст. Но странно вы ведь могли просто xpath ом текст получить но ладно.

     htmltotext = function(string) {
        try {
            var text = string.replace(/<br>/gi, "\n")
            var text = text.replace(/<p.*>/gi, "\n")
            var text = text.replace(/<a.*href="(.*?)".*>(.*?)<\/a>/gi, " $2 (Link->$1) ")
        } catch (e) { fail(e) }
        return text.replace(/<(?:.|\s)*?>/g, "")
    }
    ВАШ_ОБРАБОТАННЫЙ_ТЕКСТ = htmltotext([[ВАШ_ТЕКСТ]])
    

    Извините заморачиваться не стал. Это из @Pragmatik - а библиотеки. Поизучайте раз вам тексты надо править от разного
    url
    upd там код символа в атрибуте) вы хотите их разобрать? Ну смотрите таблицу эмоджи кодов что и как. Выдернуть штатно не получается, вернее получается, но это не код.
    xpath //img/@alt



  • @f0cus код что Вы написали работает как то не корректноba088a14-36b3-4e94-8787-a95893bb6183-image.png

    Касательно эмоджи нет, код не нужен, пример оставил ниже (+ как должны выглядеть хэштеги)

    Как есть:

    <img class="emoji" src="/emoji/e/f09f94a5.png" alt="🔥"> Mazda назвала цену на свой первый электромобиль Компания Mazda назвала цену на свой первый электромобиль – MX-30. Правда, касается она лишь спецверсии (модели первого издания) и лишь одного рынка. Тем не менее, эта цифра дает как минимум примерную картину того, сколько будет стоить электрокар Mazda MX-30. Новинка стартует с рынка Великобритании, здесь за автомобиль в версии First Edition будут просить от 30 495 фунтов стерлингов ($39 340). Таким образом, свою первую "электричку" Мазда оценили на уровне других бюджетных электрокаров последних поколений. Новый MX-30 оснащен электродвигателем, обеспечивающим 143 л.с. и 264 Нм, а также АКБ емкостью 35,5 кВтч, которой хватает на преодоление расстояния в 200 км по циклу WLTP. Пробег довольно небольшой, однако в Мазде заявляют, что для городского авто больше и не надо: в среднем европейские жители проезжают по 50 км в день. Кроме того, это частично компенсируется быстрой зарядкой: через чарджер мощностью 50 кВт батарею можно зарядить до 80% за 30–40 минут. Стандартное оснащение Mazda MX-30 First Edition также включает в себя проекционный дисплей, круиз-контроль, мультимедиа с Apple CarPlay и Android Auto, электрорегулировки водительского сиденья в 8-и позициях, а также настенное зарядное устройство для дома. Кроме того, за доплату доступна пара эксклюзивных цветов кузова по цене 1,2 тыс. и 1,6 тыс. долларов.  <a href="ссылка">#SEAT</a> <a href="ссылка">#АВТО</a> <a href="ссылка">#НОВОСТИ</a> <a href="ссылка">#worldnewscars</a> <a href="ссылка">#автомобили</a> <a href="ссылка">#спорт</a>
    

    Как надо:

    🔥 Mazda назвала цену на свой первый электромобиль Компания Mazda назвала цену на свой первый электромобиль – MX-30. Правда, касается она лишь спецверсии (модели первого издания) и лишь одного рынка. Тем не менее, эта цифра дает как минимум примерную картину того, сколько будет стоить электрокар Mazda MX-30. Новинка стартует с рынка Великобритании, здесь за автомобиль в версии First Edition будут просить от 30 495 фунтов стерлингов ($39 340). Таким образом, свою первую "электричку" Мазда оценили на уровне других бюджетных электрокаров последних поколений. Новый MX-30 оснащен электродвигателем, обеспечивающим 143 л.с. и 264 Нм, а также АКБ емкостью 35,5 кВтч, которой хватает на преодоление расстояния в 200 км по циклу WLTP. Пробег довольно небольшой, однако в Мазде заявляют, что для городского авто больше и не надо: в среднем европейские жители проезжают по 50 км в день. Кроме того, это частично компенсируется быстрой зарядкой: через чарджер мощностью 50 кВт батарею можно зарядить до 80% за 30–40 минут. Стандартное оснащение Mazda MX-30 First Edition также включает в себя проекционный дисплей, круиз-контроль, мультимедиа с Apple CarPlay и Android Auto, электрорегулировки водительского сиденья в 8-и позициях, а также настенное зарядное устройство для дома. Кроме того, за доплату доступна пара эксклюзивных цветов кузова по цене 1,2 тыс. и 1,6 тыс. долларов. #SEAT #АВТО #НОВОСТИ #worldnewscars #автомобили #спорт
    


  • @mmaxsmile Это ТЗ?
    Он работает корректно. Так как установлены замены я вам дал ссылку на библиотеку. Потрудитесь изучить если вам это надо. Меняйте replace() в функциях. Как получить emodji я тоже дал.
    Если вы собираетесь на этом зарабатывать вы всегда будете спрашивать у меня или тех кто захочет ответить? Мне не трудно сделать, но я не понимаю зачем вам это? Думаете всегда помогать будут? Подсказку дам вот это $2 (Link->$1) Нл вам придется писать функцию самому всю





  • @f0cus нет, это не ТЗ, а пример. Само собой я понимаю что не всегда мне дадут готовый ответ и пока вопрос не решён я думаю над решением и самостоятельно. В ближайшее время изучу ссылки что Вы кидали.

    @GhostZ с ссылками работает отлично, но эмоджи бывают и внутри текста, так что выносить их перед текстом не очень правильно.



  • Стопроцентный вариант: поищи библиотеки на разных языках для очистки текста от тегов и прочего, посмотри какой там алгоритм и перепиши на js



  • @mmaxsmile, тогда replace()и регулярные выражения в помощь





  • @mmaxsmile Вам нужно понять как это все работает. Как. не выучить или записать где то регулярки и потом их по случаю и без ставить, а понять алгоритм вообще как это работает. Тогда многих проблем вам удастся избежать. Советов не жалко, жалко что если получаются не удочкой и даже не рыбой, а в космос. Если бы вы были знакомы с js и немного html то есть вероятность что вам это дербанить бы не пришлось, я не спроста в первом посте про xpath упомянул. Но даже эту задачу можно решить очень разными способами. Учите js учите html вам же пригодится. в конце концов всегда интересно что один построил другому сломать обойти. Это даже душу греет))
    upd я вот например знаю, вернее помню хорошо в регулярках только самое основное. Хотя учил вроде). Я знаю алгоритм, а когда мне надо я всегда могу найти ман и прочитать правильное написание. Есть одно из правил которому не учат но его должен знать каждый это уметь находить документацию что в простонародье манами и зовется. Ну и уметь это читать. по разному пишут.



  • @GhostZ огромное спасибо

    @f0cus учту, однако хочу заметить разбираться можно и на готовых примерах. Я изучаю все по ходу разработки, последовательно по надобности и такие темы создаю не только для того что бы получить готовое решение.


Log in to reply
 

  • 4
  • 5
  • 8
  • 7
  • 2
  • 7
  • 3
  • 8