使用preg_match_all从HTML获取项目

use*_*813 0 php regex

我在表格中有许多项目,格式如下

<td class="product highlighted">
Item Name
</td>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下PHP代码

$regex_pattern = "/<td class=\"product highlighted\">(.*)<\/td>/";
preg_match_all($regex_pattern,$buffer,$matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)

我没有得到任何输出,但我可以看到HTML中的项目.

我的正则表达式有问题吗?

Tim*_*ker 6

除了使用正则表达式解析HTML之外,是的,还有一些错误:点与新行不匹配.

所以你需要使用

$regex_pattern = "/<td class=\"product highlighted\">(.*?)<\/td>/s";
Run Code Online (Sandbox Code Playgroud)

/s修改允许点匹配任何字符,包括换行.注意不情愿的量词,.*?以避免一次匹配多个标签.