Php 将html输入值与正则表达式匹配
我正在尝试匹配一个字符串,如下所示:Php 将html输入值与正则表达式匹配,php,html,regex,Php,Html,Regex,我正在尝试匹配一个字符串,如下所示: <input type="text" value="cbyEOS56RK3lOxtiCrhmWSkDuNWwrFN4" name="iden"> 正如您可能看到的,我正在尝试匹配此HTML输入中的值。根据我对正则表达式的了解,*将匹配尽可能多的字符,直到它满足下一个标记(在本例中为“) 我的正则表达式中有name=“iden”部分,因为页面上还有其他HTML输入,我只想匹配这一部分 问题是,我没有得到任何匹配项。$match是一个空数组。我知道
<input type="text" value="cbyEOS56RK3lOxtiCrhmWSkDuNWwrFN4" name="iden">
正如您可能看到的,我正在尝试匹配此HTML输入中的值。根据我对正则表达式的了解,*
将匹配尽可能多的字符,直到它满足下一个标记(在本例中为“
)
我的正则表达式中有name=“iden”
部分,因为页面上还有其他HTML输入,我只想匹配这一部分
问题是,我没有得到任何匹配项。$match
是一个空数组。我知道$page
有正确的内容,因为我可以在回显时看到它
非常感谢您帮助修复我的正则表达式,谢谢。由于您使用了短语“页面上还有其他输入”,我假设您正在尝试从完整的HTML文档中解析出此特定标记。在这种情况下,我建议使用(我不想拿这个链接开玩笑,这里有很多选择,所以看起来很简单)。它们是专门为这个目的设计的,最终会容易得多
如果您想尝试regex,我个人会使用([^“]+)
而不是(.+?)
:
尽管这仍然不能解决导致问题的任何原因,因为您的正则表达式应该与这一行匹配。当我测试它时,这个正则表达式工作正常。您确定content$页面没有任何正则表达式没有考虑的额外空白(换行符、选项卡、属性之间的额外空格等)?我不完全同意tihs。根据任务的不同,一个成熟的DOM解析器可能会有点过头。对于这样的任务,一个简单的正则表达式通常是最好的工具。@Ben Lee:DOM解析器会更优雅地处理您在之前的评论中提到的任意空格/换行符/等。如果这像问题看起来那么简单,那么一开始,他的正则表达式应该可以工作,不是吗?很好的观点。同意如果你是可变的,DOM解析器通常会更好(一个正则表达式来解释任何地方的可选空格都会变得非常难看)。@Ben Lee:是的,这几乎就是我想要的。如果它真的是“我需要匹配这一行”那么它应该会起作用,所以我猜这是另外一回事。。。
$pattern = '~value="(.+?)" name="iden"~';
preg_match($pattern, $page, $match);
print_r($match);
$pattern = '~value="([^"]+)" name="iden"~';