Sc0undRel
@Sc0undRel

Как спарсить нужную часть текста?

Подскажите, пожалуйста, как из огромного текста, состоящего из подобных записей, выгрузить информацию о

tel-179->
your-email->


И полученную информацию разместить в виде таблицы Excel.

_wpcf7->104
_wpcf7_version->4.7
_wpcf7_locale->ru_RU
_wpcf7_unit_tag->wpcf7-f104-p157-o3
_wpnonce->2b8273a977
your-name->Krisan Lang
menu-968->Firma
text-463->Best OÜ
tel-179->58813468606
your-email->kridgfgstjan@best5apartments.ee

November 29, 2017, 18:07:14
_wpcf7->104
_wpcf7_version->4.7
_wpcf7_locale->ru_RU
_wpcf7_unit_tag->wpcf7-f104-p67-o1
_wpnonce->2b8273a977
your-name->Liis dfValma
menu-968->Eraisik
text-463->
tel-179->5396643367
your-email->liisvalma2401@gmail.com

  • Вопрос задан
  • 144 просмотра
Пригласить эксперта
Ответы на вопрос 3
solotony
@solotony
покоряю пик Балмера
а) написать парсер на основе регулярных выражений

б) загрузить в текстовый редактор, отсортировать, оставить только нужные строки, скопировать их в буфер, открыть openOfficе, сделать вставку (указав разделитель '->'
Ответ написан
mhthnz
@mhthnz
PHP, YII2, Golang, Linux
В массиве будут записи вида [0 => [], 1 => []], останется только по массиву пройтись foreach и сохранить в нужном виде (csv, tsv, ...)
<?php

function parse($text) {
    $lines = explode("\n", $text);
    $result = [];
    $switched = false;
    $i = 0;
    foreach($lines as $line) {
        
        // Add item
        if (count($matches = preg_split('/->/', $line, -1, PREG_SPLIT_NO_EMPTY)) == 2) {
            if (!isset($result[$i])) {
                $result[$i] = [];
            }
            $result[$i][$matches[0]] = $matches[1];
            $switched = false;
        } else if (!$switched) {
            $i++;
            $switched = true;
        }
    }
    return $result;
}

$text = "
_wpcf7->104
_wpcf7_version->4.7
_wpcf7_locale->ru_RU
_wpcf7_unit_tag->wpcf7-f104-p157-o3
_wpnonce->2b8273a977
your-name->Krisan Lang
menu-968->Firma
text-463->Best OÜ
tel-179->58813468606
your-email->kridgfgstjan@best5apartments.ee

November 29, 2017, 18:07:14
_wpcf7->104
_wpcf7_version->4.7
_wpcf7_locale->ru_RU
_wpcf7_unit_tag->wpcf7-f104-p67-o1
_wpnonce->2b8273a977
your-name->Liis dfValma
menu-968->Eraisik
text-463->
tel-179->5396643367
your-email->liisvalma2401@gmail.com
";


print_r(parse($text));
Ответ написан
zamboga
@zamboga
Бизнес-аналитика, фин. моделирование, дашборды
В вашем случае все делается в пару кликов без скриптов.

1. Вставить ваш текст в Excel
2. Разбить по столбцам, разделитель ">" (судя по куску текста этот символ уникальный. Если нет — то сначала через ctrl+а заменить "->" на какой-то редкий символ, которого точно нет в вашем тексте, например, "№". Потом сделать "разделение по столбцам" по этому символу)
3. Применить текстовый фильтр по первой колонке, для "tel-" и "your-email"
4. Скопировать на новый лист отфильтрованные значения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 07:47
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект