使用或时,PHP正则表达式返回空值

时间:2012-07-19 17:28:23

标签: php regex

当在OR语句中匹配第二个值时,我的正则表达式返回一个空值,如果找到第二个匹配,我希望它忽略第一个匹配

preg_match('/>\s+(?:<input type="submit" value="(.*?)" \/>|<p class="no">(.*?)<\/p>)\s+<\/form>/', $string, $matches);

如果第一项匹配:

Array
(
    [0] => <input type="submit" value="Go" />
    [1] => Go
)

如果匹配第二项:

Array
(
    [0] => <p class="no">Value</p>
    [1] => 
    [2] => Value
)

如何让它返回[1]中的第二项值而不是[2]?

1 个答案:

答案 0 :(得分:3)

不使用(?:启动选项,而是使用(?| [docs]