preg_match('/^(<form[^<]*<\/form>)$/i',(string)$temp->results,$result);想匹配HTML中的<form>块   无效。。请高手解答正则

解决方案 »

  1.   

    ^和$拿掉,除非你的$temp->results是以<form开头,以</form>结束
      

  2.   

    /(<form[^>]*>(?:(?!<\/form>).)*<\/form>)/
      

  3.   

    /^(<form[^<]*<\/form>)$/i
    注意红色部分
    1.你需要匹配的是HTML内容,所以不能加始未限定符.
    2.[^<]* 这个模式下的扫描在遇到<form><table>...就会失败的情况.
    3.如果只需匹配form标签内的内容,/<form.*<\/form>/si,应该就可行了.