php с использованием curl и preg_match_all

Я чувствую, что у меня что-то не хватает. Я использую следующий код, чтобы вытащить некоторые цифры из таблицы. Как ни странно, я не могу ничего напечатать. Я размещаю свой код и пример таблицы ниже. Пожалуйста, помогите мне найти мою ошибку. Я хочу, чтобы он распечатывал только числа в каждой ячейке.

//gets the site $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://site.org'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); //parse the data preg_match_all('/<td align=right>(\d+?)</td>/', $response, $matches2); //prints the parsed data print_r($matches2[0]); 

Вот пример таблицы.

 <center><table border=1><tr><th align=left>Address</th><th width=50>0</th><th width=50>1</th><th width=50>2</th><th width=50>3</th><th width=50>4</th><th width=50>5</th><th width=50>6</th><th width=50>7</th><th width=50>8</th><th width=50>9</th></tr><tr><td>N7:0</td> <td align=right>1</td> <td align=right>1</td> <td align=right>1</td> <td align=right>99</td> <td align=right>0</td> <td align=right>0</td> <td align=right>0</td> <td align=right>0</td> <td align=right>0</td> <td align=right>0</td> </tr><tr><td>N7:10</td> <td align=right>0</td> <td align=right>7300</td> <td align=right>16400</td> <td align=right>3300</td> <td align=right>2200</td> <td align=right>6100</td> <td align=right>28000</td> <td align=right>18000</td> <td align=right>0</td> <td align=right>0</td> </tr></table></center><hr width=25% align=center> 

Solutions Collecting From Web of "php с использованием curl и preg_match_all"

Сообщение PHP-Error-Reporting должно было дать вам подсказку. Я настоятельно рекомендую установить error_reporting для E_ALL и display_errors для «on» во время разработки. Это дало бы вам подсказку, почему вы не получаете никаких результатов:

 PHP Warning: preg_match_all(): Unknown modifier 't' 

Таким образом, вы должны добавить escape косую черту внутри своего регулярного выражения, потому что вы используете его как разделитель.

 preg_match_all('/<td align=right>(\d+?)<\/td>/', $response, $matches2); 

Как всегда, я бы предложил, используя другой разделитель и, таким образом, сохранить ваше регулярное выражение более удобочитаемым. Обычно я выбираю «~». Это будет выглядеть так:

  preg_match_all('~<td align=right>(\d+?)</td>~', $response, $matches2); 

Попробуй это:

 preg_match_all('/<td align=right>(\d+?(\.\d+)?)<\/td>/', $response, $matches2); print_r($matches2[1]); 

Обратите внимание, что косая черта в закрывающемся теге TD теперь скрыта.