PHP preg_匹配的正则表达式捕获组不返回值
我正在尝试捕获下面的文本捕获$stringPHP preg_匹配的正则表达式捕获组不返回值,php,regex,preg-match,Php,Regex,Preg Match,我正在尝试捕获下面的文本捕获$string $string = "</th><td>Capture This</td>"; $pattern = "/<\/th>\r.*<td>(.*)<\/td>$/"; preg_match ($pattern, $string, $matches); echo($matches); 然而,这只是返回数组。我还尝试使用print\r打印$matches,但这给了我数组 这个模式只会
$string = "</th><td>Capture This</td>";
$pattern = "/<\/th>\r.*<td>(.*)<\/td>$/";
preg_match ($pattern, $string, $matches);
echo($matches);
然而,这只是返回数组。我还尝试使用print\r打印$matches,但这给了我数组
这个模式只会出现一次,所以我只需要它匹配一次。谁能告诉我我做错了什么吗?问题是您需要CR字符\r。此外,您还应该使捕获组内的搜索延迟,并使用print\r输出数组。像这样:
$pattern = "/<\/th>.*<td>(.*?)<\/td>$/";
你可以在这里看到它的作用:
请注意,建议使用适当的html解析器解析html,而不是使用正则表达式。问题是您需要CR字符\r。此外,您还应该使捕获组内的搜索延迟,并使用print\r输出数组。像这样:
$pattern = "/<\/th>.*<td>(.*?)<\/td>$/";
你可以在这里看到它的作用:
请注意,建议使用适当的html解析器解析html,而不是使用正则表达式。两件事:
您需要从正则表达式中删除\r,因为输入字符串中没有回车符
将echo$matches更改为打印\r$matches或var\u dump$matches
两件事:
您需要从正则表达式中删除\r,因为输入字符串中没有回车符
将echo$matches更改为打印\r$matches或var\u dump$matches
有人能告诉我我做错了什么吗?你试图用正则表达式解析html有人能告诉我我做错了什么吗?你试图用正则表达式解析html非常感谢你,马库斯。您能推荐一个最适合这种简单情况的HTML解析器吗?你会推荐一个特定的库,还是我应该使用PHP的DOM函数?@bow-viper1这可能会有一些启发:实际上我更喜欢使用PHP的DOM函数,但我就是找不到任何函数可以捕获一个没有ID或类分配给它们的多个标记。但是,我会继续看下去,因为我知道以这种方式使用正则表达式是不受欢迎的。非常感谢你,马库斯。您能推荐一个最适合这种简单情况的HTML解析器吗?你会推荐一个特定的库,还是我应该使用PHP的DOM函数?@bow-viper1这可能会有一些启发:实际上我更喜欢使用PHP的DOM函数,但我就是找不到任何函数可以捕获一个没有ID或类分配给它们的多个标记。但是,现在我明白了以这种方式使用正则表达式是被轻视的,所以我将继续研究。