原字符串:
<LI>
  <SPAN id=result_box lang=fr c="4" a="undefined" zd="null" closure_uid_235198886="43">
    <SPAN class=hps zd="null" closure_uid_235198886="1391">la belle</SPAN> 
    <SPAN class=hps zd="null" closure_uid_235198886="1392">courbe de</SPAN> 
    <BR zd="null" closure_uid_235198886="1410">
    <SPAN class=hps zd="null" closure_uid_235198886="1399">Parfait comme</SPAN> 
    <SPAN class=hps zd="null" closure_uid_235198886="1400">cadeau pour votre amoureux</SPAN>
    <BR zd="null" closure_uid_235198886="1411">
    <SPAN class=hps zd="null" closure_uid_235198886="1401">NOTE</SPAN>
    <SPAN zd="null" closure_uid_235198886="1402">: Laver</SPAN> 
    <SPAN class=hps zd="null" closure_uid_235198886="1403">à la main</SPAN> 
  </SPAN> 
<LI>处理后的字符串:
<LI>
  la belle courbe de <br>
  Parfait comme cadeau pour votre amoureux <br>
  NOTE : Laver à la main
<LI>问题:
请问如何写正则
preg_replace();

解决方案 »

  1.   

    $arr1=array('#<SPAN class[^>]+>([^<]+)</SPAN>\r\n#i', '#<br[^>]*>#i', '#</?span>\r\n#i');
    $arr2=array('$1 ', '<br>', '');
    preg_replace($arr1, $arr2, $str);\r\n是windows文本换行符,要注意对应文本的格式
    没环境测试,自己摸索一下吧
      

  2.   

    $str1 = '<LI>
          <SPAN id=result_box lang=fr c="4" a="undefined" zd="null" closure_uid_235198886="43">
            <SPAN class=hps zd="null" closure_uid_235198886="1391">la belle</SPAN>
            <SPAN class=hps zd="null" closure_uid_235198886="1392">courbe de</SPAN>
            <BR zd="null" closure_uid_235198886="1410">
            <SPAN class=hps zd="null" closure_uid_235198886="1399">Parfait comme</SPAN>
            <SPAN class=hps zd="null" closure_uid_235198886="1400">cadeau pour votre amoureux</SPAN>
            <BR zd="null" closure_uid_235198886="1411">
            <SPAN class=hps zd="null" closure_uid_235198886="1401">NOTE</SPAN>
            <SPAN zd="null" closure_uid_235198886="1402">: Laver</SPAN>
            <SPAN class=hps zd="null" closure_uid_235198886="1403">à la main</SPAN>
          </SPAN>
        <LI>';$reg = "/<span(.*)>|<\/span>|zd=\"(.*)\"|closure_uid_235198886=\"(.*)\"/iU";
    $str = preg_replace($reg, '', $str1);var_dump($str);exit;
      

  3.   

    $s =<<< TXT
    <LI>
      <SPAN id=result_box lang=fr c="4" a="undefined" zd="null" closure_uid_235198886="43">
        <SPAN class=hps zd="null" closure_uid_235198886="1391">la belle</SPAN> 
        <SPAN class=hps zd="null" closure_uid_235198886="1392">courbe de</SPAN> 
        <BR zd="null" closure_uid_235198886="1410">
        <SPAN class=hps zd="null" closure_uid_235198886="1399">Parfait comme</SPAN> 
        <SPAN class=hps zd="null" closure_uid_235198886="1400">cadeau pour votre amoureux</SPAN>
        <BR zd="null" closure_uid_235198886="1411">
        <SPAN class=hps zd="null" closure_uid_235198886="1401">NOTE</SPAN>
        <SPAN zd="null" closure_uid_235198886="1402">: Laver</SPAN> 
        <SPAN class=hps zd="null" closure_uid_235198886="1403">à la main</SPAN> 
      </SPAN> 
    <LI>
    TXT;
    echo strip_tags($s, '<li><br>');
      

  4.   


    $str1 = '<LI>
          <SPAN id=result_box lang=fr c="4" a="undefined" zd="null" closure_uid_235198886="43">
            <SPAN class=hps zd="null" closure_uid_235198886="1391">la belle</SPAN>
            <SPAN class=hps zd="null" closure_uid_235198886="1392">courbe de</SPAN>
            <BR zd="null" closure_uid_235198886="1410">
            <SPAN class=hps zd="null" closure_uid_235198886="1399">Parfait comme</SPAN>
            <SPAN class=hps zd="null" closure_uid_235198886="1400">cadeau pour votre amoureux</SPAN>
            <BR zd="null" closure_uid_235198886="1411">
            <SPAN class=hps zd="null" closure_uid_235198886="1401">NOTE</SPAN>
            <SPAN zd="null" closure_uid_235198886="1402">: Laver</SPAN>
            <SPAN class=hps zd="null" closure_uid_235198886="1403">à la main</SPAN>
          </SPAN>
        <LI>';$reg = "/<span(.*)>|<\/span>|zd=\"(.*)\"|closure_uid_235198886=\"(.*)\"/iU";
    $str = preg_replace($reg, '', $str1);var_dump($str);exit;
      

  5.   


    这个没有把<br>里面的冗余代码去掉。
      

  6.   


    因为我的$s前后都还有HTML代码,这里只是截取了需要替换的部分字符串,所以不能用这种方法,只能用正则。
      

  7.   

    $patterns = array(
        '/<span[^>]*>/i',
        '/<\/span>/i',
        '/<br[^>]*>/i',
    );
    $replace = array(
        '',
        '',
        '<br>',
    );
    echo preg_replace($patterns, $replace, $str);这个不错。