0

ORステートメントで2番目の値が一致すると、正規表現は空白の値を返します。2番目の値が見つかった場合、最初の一致を無視するようにします。

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

最初の項目が一致する場合:

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

2番目の項目が一致する場合:

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

[2]ではなく[1]の2番目のアイテムの値を返すようにするにはどうすればよいですか?

4

1 に答える 1

3

(?:オプションを開始するために使用する代わりに、 (?|[ docs ]を使用してください

于 2012-07-19T17:31:35.583 に答える