Переносы строк. Сжатие пробелов

Поддержка
  • @john_bradley said in Переносы строк. Сжатие пробелов:

    Спасибо, что разъяснили. Жаль конечно что приходится мудрить и добавлять кучу действий казалось бы для такой элементарной задачи.

    html страница генерируется php скриптом (в основном), а его в свою очередь писал кодер, и для достижения своей цели, он тоже мог прибегнуть к разного рода костылям. Добавлять пробелы к тексту, чтобы выравнять его по элементу например. А когда получаешь этот текст из кода, то его придётся обрабатывать как необходимо.

    @john_bradley said in Переносы строк. Сжатие пробелов:

    если в одном тексте у меня будет стоять разделитель строки <br/> а в другом </p>

    Если получать текст через xpath то оба этих тега выполнят только одну функцию - перенесут строку.

  • @fox said in Переносы строк. Сжатие пробелов:

    Если получать текст через xpath то оба этих тега выполнят только одну функцию - перенесут строку.

    Не совсем, бас будет все писать в одну строку, по крайней мере в моем примере это так https://yadi.sk/i/O6K-KjSrzFj-GQ Действие "Xpath получить текст" просто убирает теги в html, но не переносит текст если присутствуют теги переноса строки.

    @allive said in Переносы строк. Сжатие пробелов:

    Для баса получать xml и получать text это разные действия. Он может получить текст из xml но только тот что имеет прямое отношение к тексту.

    В данном случае текст ссылки имеет отношение к тексту, например если указать действие xpath получить текст, он находит текст ссылки (в данном случае это "vk.cc/654646") https://yadi.sk/i/O6K-KjSrzFj-GQ потому-что это текст, а если применить получить xml и добавить к нему /text() то программа почему то считает, что это уже не текст, парадокс https://yadi.sk/i/iXM-sua9LrhC0g Вот я о чем.

  • @john_bradley said in Переносы строк. Сжатие пробелов:

    он находит текст ссылки

    Потому что так написано на странице, какая программа? При чем тут бас? Это правила xpath ну получите текст вашим в арубузе. Бас следует правилам xpath которые у него есть. Это сделано для вас упрощение, а вы зачем то требуя в условиях одно хотите получать другое. https://github.com/bablosoft/BAS/tree/master/Modules/Xpath/js

    То что вы в арбузе добавляете как text() здесь реализовано просто разными действиями. Но иногда пейсатели сайтостроители тоже пишут одно а получаются другое. И потому бас умеет как и арбуз прощать ошибки кодерства. Но вот догадываться за вас он не обязан. Браузер тоже)

  • @allive Я говорю о bas, не грешу конечно на программу, просто интересно почему так получается. Получить каждый xml и добавит text() это практически то же самое что и получить текст xml, только на выходе получается массив текстовых строк, если вы говорите о правилах xpath. Тут я ошибок кодерства не заметил, есть xml:

    <div id="3881504" class="description"> Вот первая строка. <br/><noindex><a href="https://vk.cc/654646/" class="link " target="_blank" rel="nofollow" title="https://vk.cc/654646">vk.cc/654646</a></noindex> вот сайт (вторая строка). <br/>Вот третья строка. <br/>Вот четвертая строка. <br/> </div>

    в нем текст "vk.cc/654646", если получить каждую текстовую строку через "xpath получить кажый xml" таким xpath "//*[@class="description"]/text()" эта часть текста "vk.cc/654646" не отображается, если получать текст через "xpath получить текст" отображается, этот момент мне не ясен.
    ХЗ почему так https://yadi.sk/i/Gk4FVosLhaqhFQ

  • @john_bradley Я вам все ответил. ответ вашей задаче теперь внимательно смотрите на теги.
    Вам даже арбуз подсказывает
    alt text

  • @allive Так это же текст https://yadi.sk/i/xmerAmVGkqKlfQ

  • Решено. Может кому пригодиться как перевести текст в нормальный вид со всеми переносами

    var s = ([[XPATH_XML]]);
    s = s.replace(/<br/>/g, "\r\n")
    s = s.replace(/<br />/g, "\r\n")
    s = s.replace(/<br>/g, "\r\n")
    s = s.replace(/</p>/g, "\r\n")
    s = s.replace(/<.*?>/g, "")
    s = s.replace(/[" "]{3,}/g, "")
    s = s.trim()
    [[XPATH_TEXT]]=s

  • @John_Bradley said in Переносы строк. Сжатие пробелов:

    Решено. Может кому пригодиться как перевести текст в нормальный вид со всеми переносами

    var s = ([[XPATH_XML]]);
    s = s.replace(/<br/>/g, "\r\n")
    s = s.replace(/<br />/g, "\r\n")
    s = s.replace(/<br>/g, "\r\n")
    s = s.replace(/</p>/g, "\r\n")
    s = s.replace(/<.*?>/g, "")
    s = s.replace(/[" "]{3,}/g, "")
    s = s.trim()
    [[XPATH_TEXT]]=s

    А куда всю эту байду нужно тулить? Встроенные языки?

  • @bigorat said in Переносы строк. Сжатие пробелов:

    @Semen 054e74da-c6fe-42cb-b26e-628af9ce4b98-изображение.png

    Спасибо. Почему то SyntaxError: Parse error во время выполнения действия 910745935 выдает, это в этом коде проблема?