繁体   English   中英

具有PHP preg_match的RegEx捕获组未返回值

[英]RegEx Capture Group with PHP preg_match Not Returning Values

我试图在下面的$ string中捕获文本“ Capture This”。

$string = "</th><td>Capture This</td>";
$pattern = "/<\/th>\r.*<td>(.*)<\/td>$/";

preg_match ($pattern, $string, $matches);

echo($matches);

但是,这仅返回“ Array”。 我也尝试使用print_r打印$ match,但这给了我“Array()”。

这个模式只会出现一次,所以我只需要匹配一次。 有人可以告诉我我做错了什么吗?

问题是你需要一个CR字符\\r 另外,您应该使捕获组内的搜索变得懒惰,并使用print_r输出数组。 像这样:

$pattern = "/<\/th>.*<td>(.*?)<\/td>$/";

您可以在这里查看其运行情况: http : //codepad.viper-7.com/djRJ0e

请注意,建议使用适当的html解析器而不是使用正则表达式来解析html。

两件事情:

  1. 您需要从正则表达式中删除\\r ,因为输入字符串中没有回车符。

  2. echo($matches)更改为print_r($matches)var_dump($matches)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM