Извлечь список спецификаций из текста (неизвестный формат)

Как извлечь из описания продукта спецификацию, которая имеет неизвестный формат (иногда это неупорядоченный список, иногда это br-элемент и т. Д.), Но ВСЕГДА выглядит одинаково впереди.

Визуал похож на:

Некоторый текст описания, иногда это одно предложение, иногда больше..

== иногда здесь пустая строка, иногда нет ==

  • спецификация item1
  • спецификация item2

Есть ли способ извлечь это "визуально" в PHP?

Пример:

<h2> desc <br>
<br>
&gt; <strong> T Shirt</strong><br>
&gt; Breathable mesh fabric<br>
&gt; Reflective detail<br>
&gt; Flat lock seams <br>

2 ответа

Решение

Вы можете попробовать отфильтровать ваши записи. Мне удалось получить ваш пример в массив. Тогда будет небольшой спор с результатом:

<?php

$html =<<<HTML
<h2> desc </h2>
<br>
&gt; <strong> T Shirt</strong><br>
&gt; Breathable mesh fabric<br>
&gt; Reflective detail<br>
&gt; Flat lock seams <br>
HTML;

$no_html       = strip_tags($html);
$no_entities   = preg_replace('/&#?[a-z0-9]+;/i', '', $no_html);
$parts         = preg_split('/\R/', $no_entities);
$trimmed_parts = array_map('trim', $parts);
var_export($trimmed_parts);

Выход:

array (
    0 => 'desc',
    1 => '',
    2 => 'T Shirt',
    3 => 'Breathable mesh fabric',
    4 => 'Reflective detail',
    5 => 'Flat lock seams',
)

Это можно сделать с помощью file_get_contents() и некоторой обработки регулярных выражений. Пожалуйста, убедитесь, что в PHP.ini включены правильные настройки (откройте упаковщики URL)

См. http://php.net/manual/en/filesystem.configuration.php

Образец кода:

<?php

$page = file_get_contents('Provide your url here');

preg_match("/regex pattern here/", $page, $agent_name);

// display agent name matches
print_r($agent_name)

Личное предложение - использование python упростит процесс. Многие пакеты уже доступны для этой цели. Например, bs4

Другие вопросы по тегам