Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将html输入值与正则表达式匹配_Php_Html_Regex - Fatal编程技术网

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"~';