У меня есть одна большая строка, которая выглядит следующим образом:
$string = '<span id="nothread307693965">blabla here is a lot of text blabla<span id="nothread5248574987">blabla even more text<span id="nothread9754541">';
Теперь мне нужно получить все числа из потоков. ('' -> '307693965'). Для этого мне нужен поиск строк в PHP, который должен возвращать все числа в массиве.
Выход должен быть:
array(3) { [0]=> int(307693965) [1]=> int(5248574987) [2]=> int(9754541) }
Это место, где я застрял, пожалуйста, помогите мне!
Вы можете использовать строковые функции. Но для целей извлечения простое регулярное выражение рекомендуется для минимальной проверки структуры:
preg_match_all('/[\s]id="nothread(\d+)"/', $html, $result); $numbers = $result[1];
\s
означает пробел. И \d+
соответствует десятичным знакам. Для захвата используются скобки ( )
, и поскольку они являются первыми, их содержимое будет отображаться в индексе [1]
массива результатов.
preg_match_all('/nothread([0-9]{5,})/', $string, $matches);
$matches
теперь содержит то, что вы хотели.