Я хочу получить числа между тегами html. Я получаю все между тегами html, но мне просто нужны числа. Я хочу сохранить их как целые числа в базе данных.
Пример HTML-кода:
<div class = "col-md-3 product-c"><span title = "how many x product left"> 4 left</div>
$pattern = <div class = "col-md-3 product-c"><span (?:.*?)>(.*?)</div>
Этот шаблон дает мне 4 left, но я хочу получить только номер 4 (или что-то еще), поэтому я попробовал этот пример ниже:
$pattern = <div class = "col-md-3 product-c"><span (?:.*?)>([0-9]+)</div>
Но на этот раз он ничего не возвращает, просто пустой массив.
Как я могу поместить между этими тегами только числа?
@Parth Да, пробовал, но все равно спасибо :)
@Parth Это было бы слишком свободно для этого. Что-то вроде <h1> подошло бы.
@ user3783243 Хорошо
Вам очень поможет использование библиотеки синтаксического анализатора html. Подумайте об этом, если вам нужно серьезно заняться этим.






Есть две проблемы:
Это зависит от того, какие условия точный вы хотите указать, но это будет работать:
<div class = "col-md-3 product-c"><span (?:.*?)>(?:\s*)([0-9]+)(?:[^0-9]*)</div>
(?:.*?) игнорирует все, что может быть в атрибутах <span>(?:\s*) игнорирует пробелы перед цифрой (ами)([0-9]+) группирует сами цифры(?:[^0-9]*) игнорирует все, что находится после цифрИ в этом видно работающий здесь.
Сказав это, вы можете рассмотреть парсер HTML.
это работает, спасибо за подробное объяснение. Я пытаюсь научиться, но я новичок в регулярных выражениях ..
Я думаю, что использование парсера будет лучшим подходом для этого. Как только у вас будет правильное значение (путем синтаксического анализа в span и проверки title), вы можете просто преобразовать его в int, и это будет желаемое значение.
$html = '<div class = "col-md-3 product-c"><span title = "how many x product left"> 4 left</div>';
$dom = new domdocument();
$dom->loadhtml($html);
$spans = $dom->getelementsbytagname('span');
foreach($spans as $span) {
if ($span->getattribute('title') == 'how many x product left') {
echo (int)$span->nodeValue;
}
}
Вы пробовали это делать? Может помочь stackoverflow.com/questions/6278296/…