(<b>)?
(<\/b>)?
我这样写不行。请问要怎么写呢?匹配<b>和</b>存在或不存在。

解决方案 »

  1.   

    匹配<b>和</b>同时存在:preg_match("/<b>.*<\/b>/",$str)? "都同时存在":"";
    匹配<b>和</b>都不存在:!preg_match("/(<b>|<\/b>)+/",$str)? "都不存在":"";
    不知是否满意!!
      

  2.   

    可能是我没说清,我的意思是说。
    <font color="#008000"><b>csdn.net</b>内容</font>
    比如上面<b>和</b>有可能不存在也有可能存在。
      

  3.   

    <font color="#008000"><b>csdn.net</b>内容</font>
    <font color="#008000">csdn.net内容</font>
    就是这两种情况.
      

  4.   

    你上面的可以理解成两个意思
    情况1.要么<b>和</b>同时存在,要么<b>和</b>都不存在
    正则如下:echo preg_match("/(<b>.*<\/b>|(^<b>).*(^<\/b>))/",$str)? "符合":"不符合";情况2.<font color="#008000">和</font>中间的值可以为任意字符
    正则如下:echo preg_match("/^<font\scolor=\"#008000\">.*<\/b>/",$str) '符合':'不符合';
      

  5.   

    情况2写错了!
    应该是:echo preg_match("/^<font\scolor=\"#008000\">.*<\/font>/",$str) '符合':'不符合';
      

  6.   

    刚少了个?号:echo preg_match("/^<font\scolor=\"#008000\">.*<\/font>/",$str)? '符合':'不符合';
      

  7.   

    我晕 那就把<b>标签也当做被匹配字符哦
      

  8.   


    其实我是想取“内容”那里。
    也就是
    <font color="#008000"><b>csdn.net</b>取这里内容</font>
    <font color="#008000">csdn.net取这里内容</font>preg_match_all("/<font color=\"#008000\">.*?csdn.net.*?([^<]*?)<\/font>/is",$content,$aaa);
    我是这样写的,可以取,不过要是<b>和</b>成别的也匹配得到啊!比如:
    <font color="#008000"><a>csdn.net</a>取这里内容</font>所以我就想要怎么才能只有<b>和</b>存在或不存在时取。如果那两个地方变成别的字符就不取。
      

  9.   

    晕~你绕了半天,为什么不早这么说呢!!浪费表情啊!
    echo preg_match("/^<font\scolor=\"#008000\">(<b>csdn\.net<\/b>|csdn\.net).+<\/font>/",$str)? '符合': '不符合';