使用Regex获取HTML标记中的值?

时间:2011-10-11 16:37:18

标签: php regex tags

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

(<input type="hidden" name="pt" id="pt" value=")|(" \/>)

从这段代码:

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

但是我怎么能这样做呢?获取价值,但不是周围的标签?所以我只会得到“f64b1aadf7baa6e416dbfb6bf95fa031”(没有引号)。感谢。

2 个答案:

答案 0 :(得分:3)

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

value="(.+?)"

我假设您正在使用PHP,因此要将捕获的组取出,请执行以下操作:

preg_match('value="(.+?)"', $input, $groups);
echo "Value = " . $groups[1];

?使其成为一个懒惰的运算符,因此它会占用第一个引号。如果引号内有引号转义的可能性,则需要添加:

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

答案 1 :(得分:2)

虽然通常不建议尝试使用正则表达式解析HTML,但您可以尝试这样做:value="([^"]*)"