Как извлечь из описания продукта спецификацию, которая имеет неизвестный формат (иногда это неупорядоченный список, иногда это br-элемент и т. Д.), Но ВСЕГДА выглядит одинаково впереди.
Визуал похож на:
Некоторый текст описания, иногда это одно предложение, иногда больше ..
== иногда здесь пустая строка, иногда нет ==
- спецификация item1
- спецификация item2
Есть ли способ извлечь это «визуально» в PHP?
Пример:
<h2> desc <br>
<br>
> <strong> T Shirt</strong><br>
> Breathable mesh fabric<br>
> Reflective detail<br>
> Flat lock seams <br>
Вы можете попробовать отфильтровать ваши записи. Мне удалось получить ваш пример в массив. Тогда будет небольшой спор с результатом:
<?php
$html =<<<HTML
<h2> desc </h2>
<br>
> <strong> T Shirt</strong><br>
> Breathable mesh fabric<br>
> Reflective detail<br>
> 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 упростит процесс. Многие пакеты уже доступны для этой цели. Eg- bs4