我有这段代码:
<?php
$str = '<form name="signIn" action="http://example.com" method="post">' .
'<input type="hidden" name="myname" value="xyz"><input type="hidden" name="yourname" value="abc">' .
'</form>';
preg_match('/<form name=\"sign_in|signIn\" (.+)>(.+)<\/form>/Us', $str, $m);
print_r($m);
此代码的输出为:
Array
(
[0] => signIn" action="http://example.com" method="post"><input type="hidden" name="myname" value="xyz"><input type="hidden" name="yourname" value="abc"></form>
[1] => action="http://example.com" method="post"
[2] => <input type="hidden" name="myname" value="xyz"><input type="hidden" name="yourname" value="abc">
)
我不明白为什么输出数组中的单元格0不以<form name="
开头?
答案 0 :(得分:1)
将替代方案放在一个组中:
preg_match('/<form name="(?:sign_in|signIn)" (.+)>(.+)<\/form>/Us', $str, $m);
但是你最好使用解析器。正则表达式和HTML不是好朋友!