Я хочу извлечь дату из нескольких HTML-документов. Дата всегда следует этому шаблону:
Образец полной даты: 09 января 2022 г.
Я хочу извлечь только те даты, которые заключены в теги span. Итак, полная схема
<span>Jan 09, 2022</span>
Я не умею писать preg_match. Кто-нибудь может мне помочь, пожалуйста!






<span>(\w{3} \d{1,2}, \w{4})</span>
\w — это метасимвол множества [a-zA-Z0-9_].
{3} означает трижды.
\d — это метасимвол множества [0-9].
{1,2} означает один или два раза.
Попробуйте https://regex101.com/r/tNRa73/1
$pattern = '/<span>(\w{3} \d{1,2}, \w{4})</span>/';
preg_match(
$pattern,
$html,
$matches // <-- The results will be added to this new variable.
);
$matches[1]; // The date will be in the first index because it was
// the first "capture group" i.e set of parens.
// If you expect multiple dates in one HTML document, then use:
preg_match_all(
$pattern,
$html,
$matches
);
$matches[1]; // Now, the first index is an array of matches of
// the first "capture group".
@rhinosforhire Большое спасибо за вашу помощь. Не могли бы вы немного помочь, изменив этот шаблон для случая, если значение дня является однозначным или двузначным. Пока я использовал ваш шаблон, я обнаружил, что некоторые даты в документах содержат день как одну цифру, например, 9 января 2022 г.
Спасибо, что заметили это, @vee. @zish, я изменил квантификатор, чтобы он совпадал один или два раза по запросу, то есть {1,2}.
\wсоответствует любому символу слова (эквивалентен[a-zA-Z0-9_])