Php 使用正则表达式获取HTML标记中的值?

Php 使用正则表达式获取HTML标记中的值?,php,regex,tags,Php,Regex,Tags,我使用此正则表达式代码获取标记,但不获取值: (<input type="hidden" name="pt" id="pt" value=")|(" \/>) 根据该代码: <input type="hidden" name="pt" id="pt" value="f64b1aadf7baa6e416dbfb6bf95fa031" /> 但我该怎么做呢?获取值,但不获取周围的标记?所以我只会得到f64b1aadf7baa6e416dbfb6bf95fa031而不带引号

我使用此正则表达式代码获取标记,但不获取值:

(<input type="hidden" name="pt" id="pt" value=")|(" \/>)
根据该代码:

<input type="hidden" name="pt" id="pt" value="f64b1aadf7baa6e416dbfb6bf95fa031" />

但我该怎么做呢?获取值,但不获取周围的标记?所以我只会得到f64b1aadf7baa6e416dbfb6bf95fa031而不带引号。谢谢。

虽然通常不建议尝试使用正则表达式解析HTML,但您可以尝试以下方法:value=[^]*。

正如Donut所说,您不应该在HTML上使用正则表达式。然而,由于这是一个非常简单的案例,我将成为一个启用者。但说真的,如果它变得更加复杂,就切换到DOM解析器

value="(.+?)"
我假设您使用的是PHP,所以要获取捕获的组,请执行以下操作:

preg_match('value="(.+?)"', $input, $groups);
echo "Value = " . $groups[1];
那个?使其成为一个惰性运算符,因此它将抓住第一个引号。如果引号内可能存在转义引号,则需要添加以下内容:

value="(.+?[^\\])"

什么语言?所有正则表达式的使用方式都略有不同。请尝试value=f64b1aadf7baa6e416dbfb6bf95fa031。您必须更具体地说明您的解决方案应该适用于哪些情况—所有有效的HTML?