将html输入值与正则表达式匹配

时间:2010-10-25 19:52:43

标签: php html regex

我正在尝试匹配以下字符串:

<input type="text" value="cbyEOS56RK3lOxtiCrhmWSkDuNWwrFN4" name="iden">

这是我的代码:

$pattern = '~value="(.+?)" name="iden"~';
preg_match($pattern, $page, $match);
print_r($match);

正如您可能看到的,我正在尝试匹配此HTML输入中的值。根据我所知道的正则表达式,.*将匹配尽可能多的字符,直到它满足下一个标记(在本例中为")。

我的正则表达式中有name="iden"部分,因为页面上还有其他HTML输入,我只想匹配这个。

问题是,我根本没有得到任何比赛。 $match是一个空数组。而且我知道$page有正确的内容,因为当我回应它时我能看到它。

感谢帮助修复我的正则表达式,谢谢。

1 个答案:

答案 0 :(得分:1)

由于您使用了“页面上还有其他输入”这一短语,我假设您正在尝试从完整的HTML文档中解析出这个特定的标记。在这种情况下,我建议使用DOM parser而不是正则表达式(我不是试图对这个链接充满挑剔,只有很多选项,所以这看起来最简单)。它们专为此目的而设计,最终将变得更加容易。

如果你想尝试使用正则表达式,我个人会使用([^"]+)代替(.+?)

$pattern = '~value="([^"]+)" name="iden"~';

虽然这仍然无法解决导致问题的原因,因为你的正则表达式应该在该行上匹配。