匹配preg_match中的双引号

时间:2011-09-25 01:54:45

标签: php regex preg-match

我想匹配下面的模式并获得单词target。

  

INPUT TYPE =“HIDDEN”NAME =“TITLE”VALUE =“target”>

我试试这个但是徒劳无功。

preg_match('@(?:<INPUT TYPE="HIDDEN"  NAME="TITLE" VALUE=")(.*)(?:">)@',$data,$matches);

我认为问题是因为双引号

我也试过“但仍然失败......

3 个答案:

答案 0 :(得分:2)

它失败只是因为你的模式中有一个双重空格(标有_):

INPUT TYPE="HIDDEN"__NAME="TITLE"

在那里删除一个空间并且它可以工作,无论如何这里将是我从头开始的尝试,不区分大小写并且使用"'但是我不确定它是否是您想要的一部分name必须为title,在这种情况下,我必须对其进行一些编辑。

<?php
    $data = '<input type="hidden" name="title" value="target">';
    preg_match('/<input[^>]+value=[\'"](\w*)[\'"][^>]*>/i',$data,$matches);
    echo $matches[1]; //=> target
?>

答案 1 :(得分:0)

试试这个:

preg_match('@<INPUT TYPE="HIDDEN" NAME="TITLE" VALUE="([^"]*)">@', $data, $matches);

答案 2 :(得分:0)

你很接近......你需要匹配使用()。看起来你有一个额外的)

preg_match('@<INPUT TYPE="HIDDEN"  NAME="TITLE" VALUE="([^"]*)">@',$data,$matches);

[^“] - ”

以外的任何字符

() - 匹配部分