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番目のアイテムの値を返すようにするにはどうすればよいですか?