我正在尝试匹配以下字符串:
<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
有正确的内容,因为当我回应它时我能看到它。
感谢帮助修复我的正则表达式,谢谢。
答案 0 :(得分:1)
由于您使用了“页面上还有其他输入”这一短语,我假设您正在尝试从完整的HTML文档中解析出这个特定的标记。在这种情况下,我建议使用DOM parser而不是正则表达式(我不是试图对这个链接充满挑剔,只有很多选项,所以这看起来最简单)。它们专为此目的而设计,最终将变得更加容易。
如果你想尝试使用正则表达式,我个人会使用([^"]+)
代替(.+?)
:
$pattern = '~value="([^"]+)" name="iden"~';
虽然这仍然无法解决导致问题的原因,因为你的正则表达式应该在该行上匹配。