Я пытаюсь загрузить удаленный веб-сайт и получить все числа, которые находятся внутри круглых скобок. Но то, что заканчивается, это только соответствует последнему значению.
Неправильно ли мое регулярное выражение? Я использую правильные флаги?
Я добавил пример того, что он должен совместить во второй переменной $ html.
//$html = file_get_contents("http://example.com/test.html"); $html = "(1234) (12) (1) \r\n (1346326)"; preg_match_all("^[(\d)]+$^", $html, $matches, PREG_PATTERN_ORDER); print_r($matches); echo "<br>"; foreach ($matches as $val) { echo "matched: " . $val[0] . "\n"; }
Благодарю.
Как насчет:
preg_match_all("/\((\d+)\)/", $html, $matches, PREG_PATTERN_ORDER); print_r($matches[1]);
Я вижу две возможные проблемы.
Сначала вы сопоставляете с начала (^) до конца ($), это будет соответствовать только тем, что подходит точно между началом строки и концом строки.
Во-вторых, вы, скорее всего, захотите использовать параметр / gs regex paramter, чтобы выполнить все это.
preg_match_all("/\b(\d+)\b/gs" ...