ФорумПрограммированиеPHP для идиотов → Помогите разобраться с парсингом html-страниц

Помогите разобраться с парсингом html-страниц

  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 12 февраля 2010 г. 9:36, спустя 29 минут 5 секунд

    preg_match_all("#<textarea.*>(.*)</textarea>#iUs", $line, $output_array_textareas);
    preg_match_all("#<p><img.*src.*=.*\\\"(.*)\\\".*>#iUs", $line, $output_array_imgs);
    img находит, textarea не находит пустой массив выдает, а на Пыхе работает
  • adw0rd

    Сообщения: 22943 Репутация: N Группа: в ухо

    Spritz 12 февраля 2010 г. 9:42, спустя 5 минут 47 секунд


    preg_match_all('/<p>\s*<img.*?src\s*=\s*"(.*?)".*?>/is', $line, $output_array_imgs);
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 12 февраля 2010 г. 10:04, спустя 21 минуту 58 секунд

    adw0rd, img находит не находит textarea. Не находит потому что не правильный паттерн.
    У меня
    <textarea> —> одна строка
    содержимое —> вторая строка
    </textarea> —> третья строка строка
    Скажите на Пыхе обрабатываемый текст преобразуется в сплошную строку?
    Спустя 249 сек.
    Ребята с гордостью выкладываю рабочий вариант)))

    $dir = 'D:/SCT/SCT2/';
    foreach(glob($dir . '*.HTML') as $file) {
    $f = fopen($file, "rt");
    $file1 = file_get_contents($file);
    //$lines = explode("\n", fread($f, filesize($file)));
    echo "Файл: ".$file;
    // foreach ($lines as $line)
    // {
    preg_match_all('/<textarea.*>(.*)<\/textarea>/iUs', $file1, $output_array_textareas);
    foreach ($output_array_textareas[1] as $textarea)
    {
    echo "\n<br />Код из textarea: " . $textarea;
    }
    preg_match_all('/<p>\s*<img.*?src\s*=\s*"(.*?)".*?>/is', $file1, $output_array_imgs);
    foreach ($output_array_imgs[1] as $img)
    {
    echo "\n<br />Код из img: " . $img;
    }
    // }
    }
  • adw0rd

    Сообщения: 22943 Репутация: N Группа: в ухо

    Spritz 12 февраля 2010 г. 10:06, спустя 1 минуту 42 секунды

    gvik, а, ссорь, не ту регулярку правил )
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 12 февраля 2010 г. 10:09, спустя 2 минуты 46 секунд

    adw0rd, там дело было не в регулярке, а в том как я файл распаковывал (нужно было всё в одну строку)
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 12 февраля 2010 г. 10:14, спустя 5 минут 40 секунд

    gvik, значит я модификатором S ошибся…
  • adw0rd

    Сообщения: 22943 Репутация: N Группа: в ухо

    Spritz 12 февраля 2010 г. 10:18, спустя 3 минуты 32 секунды


    adw0rd, там дело было не в регулярке, а в том как я файл распаковывал (нужно было всё в одну строку)
    нет, надо было в регулярке указать что режим многострочный
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 13 февраля 2010 г. 4:46, спустя 18 часов 27 минут 43 секунды



    adw0rd, там дело было не в регулярке, а в том как я файл распаковывал (нужно было всё в одну строку)
    нет, надо было в регулярке указать что режим многострочный

    "…его пример другим наука…"
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 13 февраля 2010 г. 5:03, спустя 17 минут 10 секунд

    Помогите разделить сплитом строки такого вида, не получается никак
    AP LOCKHEED: LS 1684
    ATE (AD1): 03.0137-0253.2
    BENDIX: 362288B
    FERODO: FSB 422
    LUCAS: GS 8536
    TEXTAR: 98101-0464
    я делаю так split('[\: ]', $textarea) он разделяет вот так
    AP LOCKHEED
    LS 1684 ATE (AD1)
    03.0137-0253.2 BENDIX
    362288B FERODO
    FSB 422 LUCAS
    GS 8536 TEXTAR
    98101-0464
  • md5

    Сообщения: 11957 Репутация: N Группа: в ухо

    Spritz 13 февраля 2010 г. 5:07, спустя 4 минуты 31 секунду

    explode(':', $var)
    все умрут, а я изумруд
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 13 февраля 2010 г. 5:12, спустя 4 минуты 29 секунд

    gvik, забудь про split
    Спустя 10 сек.
    как и про весь сраный ereg
    Сапожник без сапог
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 13 февраля 2010 г. 5:32, спустя 20 минут 39 секунд

    поправьте пожалуйста мой паттерн
    ошибся там строка
    AP LOCKHEED: LS 1684 ATE (AD1): 03.0137-0253.2 BENDIX: 362288B FERODO: FSB 422 LUCAS: GS 8536 TEXTAR: 98101-0464
    вот паттерн с пыхи
    '#.*[: ].*[ ]#iUs'
    вот результат
    Array
    (
    [0] => Array
    (
    [0] => AP LOCKHEED:
    [1] => LS 1684
    [2] => ATE (AD1):
    [3] => 03.0137-0253.2 BENDIX:
    [4] => 362288B FERODO:
    [5] => FSB 422
    [6] => LUCAS:
    [7] => GS 8536
    [8] => TEXTAR:
    )

    )
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 13 февраля 2010 г. 5:42, спустя 9 минут 8 секунд

    gvik, выше читай
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 13 февраля 2010 г. 6:26, спустя 44 минуты 16 секунд

    я хочу разделить так "любой_символ_двоеточие_пробел_любой_символ_пробел" вот что написал "/.*:\s.*\s/iU" Правильно?
    Спустя 28 сек.
    на пыхе не получается правильный паттерн написать
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 февраля 2010 г. 6:50, спустя 24 минуты 28 секунд

    gvik, тут быстрее будет работать екксплод.
    Регулярка:
    /(.*):(.*)\n/iU - так бы я сделал
    /(.*?):(.*?)\n/i - так Эдво
    Хотя я думаю, что Эдво сделал бы так:
    /(.*):(.*)\n/

Пожалуйста, авторизуйтесь, чтобы написать комментарий!