<?
$str = '<FORM>BAFSwww.abc.comFASFSA</FORM><FORM>BAFSwww.abc.comFASFSA</FORM><FORM>BAFStest.abc.comFASFSA</FORM><FORM>BAFSwww.abc.comFASFSA</FORM>';
preg_match_all('/(<FORM>[A-Z]*test\.abc\.com[A-Z]*<\/FORM>)/iUs', $str, $Result);
print_r($Result);
?>测试通过
条件是test.abc.com 前后都是大写字母,如果不是,你可以修改匹配内容

解决方案 »

  1.   

    $str = "<FORM>BAFSwww.abc.comFASFSA</FORM><FORM>BAFSwww.abc.comFASFSA</FORM><FORM>BAFStest.abc.comFASFSA</FORM><FORM>BAFSwww.abc.comFASFSA</FORM>";
    $p = "/<FORM>\w+test\.abc\.com\w+<\/FORM>/";//'/<FORM>.*?test\.abc\.com.*?<\/FORM>/'
    preg_match($p, $str, $Result);
    print_r($Result);
      

  2.   

    <FORM>BAFSwww.abc.comFASFSA</FORM>上面忘记说了.
    <FORM>BAFSwww.abc.comFASFSA</FORM>在<FORM></FORM>里什么字符都有可能出现 <>=+_#等等~
    而且<FORM></FORM>的个数和位置也不是一定的~
      

  3.   

    preg_match_all('/(<FORM>([^\<|\<](?!\/FORM>))*test\.abc\.com.*<\/FORM>)/iUs', $str, $Result);
      

  4.   

    preg_match_all('/(<FORM>([^\<]|\<(?!\/FORM>))*test\.abc\.com.*<\/FORM>)/iUs', $str, $Result);