Получать контент внутри HTML-тегов с помощью RegExp

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

Вот данные, которые я хотел бы сопоставить:

<td>Current Value: </td><td>100.178</td> 

Я попытался использовать это регулярное выражение для соответствия и получения текста:

 preg_match("<td>Current Value: </td><td>(.+?)</td>", $data, $output); 

Однако я получаю предупреждение «Неизвестный модификатор», а мой переменный $ output выходит пустым.

Как я могу это сделать – и вы могли бы дать мне краткий обзор того, как работает решение, поэтому я могу попытаться понять, почему мой код не сделал этого?

    Вам нужно добавить разделители вокруг своего регулярного выражения:

     preg_match("#<td>Current Value: </td><td>(.+?)</td>#", $data, $output); 

    Стандартным разделителем является / , но вы можете использовать другие не буквенно-цифровые символы, если хотите (что имеет смысл здесь, потому что само регулярное выражение содержит косые черты). В вашем случае, двигатель регулярных выражений думал, что вы хотите использовать угловые скобки в качестве разделителей – и не удалось.

    Еще один совет (помимо канонического увещания «Не разбирайте HTML с регулярным выражением» (который, я думаю, в порядке, в данном случае, совершенно нормально): Используйте ([^<>]+) вместо (.*?) , Это гарантирует, что ваше регулярное выражение никогда не будет перемещаться по вложенным тегам, что является общим источником ошибок при работе с языками разметки.

    Я бы предложил вам использовать DOM Parser. Это упростит вашу жизнь, сохранит ваш код чище и будет легче поддерживать.

    http://simplehtmldom.sourceforge.net/

    У этого есть некоторые примеры доступа к дочерним элементам: http://simplehtmldom.sourceforge.net/manual.htm#section_traverse