一个字符串是以回车换行为分割进行保存的,分割为数组后,里面的每一个值应该没有回车换行符了,可是部分值还有回车换行(就是输出的值以记事本打开后,发下部分值后面另起一行才输出下一个值),怎么回事?
$attr_val_arr = explode("\n", $attr_val_list);
问题数据如下:(其中value值和后面的text值为以上分割得到的数据)
<option value="" >请选择</option>
   <option value="无
" >无
</option>
      <option value="GPS导航
" >GPS导航
</option>
      <option value="蓝牙传输
" >蓝牙传输
</option>
      <option value="手写输入
" >手写输入
</option>正常数据:
<option value="" >请选择</option>
   <option value="SD卡" >SD卡</option>
      <option value="miniSD卡" >miniSD卡</option>
      <option value="TF(microSD)卡"  selected="selected" >TF(microSD)卡</option>
      <option value="MMC卡" >MMC卡</option>

解决方案 »

  1.   

    unix和windows的换行符不同输出时用trim或者rtrim处理一下
      

  2.   

    $attr_vall_list = '<option value="" >请选择</option>
                              <option value="SD卡" >SD卡</option>
                                <option value="miniSD卡" >miniSD卡</option>
                                <option value="TF(microSD)卡"  selected="selected" >TF(microSD)卡</option>
                                <option value="MMC卡" >MMC卡</option>';
    $attr_val_arr = explode("\n\r", $attr_vall_list);
    echo "<pre>";
    foreach($attr_val_arr as $v) echo htmlspecialchars($v)."<br />";
      

  3.   


    //上面错了,应该是\r\n
    $attr_val_arr = explode("\r\n", $attr_vall_list);
      

  4.   


    不是运行平台,是你的字串来源
    如果不确定的话,用\n分割,然后数组每个字串再用trim去掉首尾空白
    当然,如果首尾有空格要保留就要另外想办法
      

  5.   


    //是不是可以这样处理一下:
    $attr_vall_list = str_replace("\r\n","\n",$attr_vall_list);
    $attr_val_arr = explode("\n", $attr_vall_list);
      

  6.   

    明白了,这样处理了下,但前台用samrty循环输出为空,后台打印正常,奇怪
      

  7.   

    改用 split 函数,可适应任何操作系统的文本
    $attr_val_arr = split("[\r\n]+", $attr_val_list);如果你不喜欢用 split 函数,可以这样写
    $attr_val_arr = array_map('trim', explode("\n", $attr_val_list) );
      

  8.   


    $attr_val_arr = explode("\n", $attr_val_list);

    // print_r($attr_val_arr);
    foreach ($attr_val_arr as &$v)
    {
    trim($v);
    }
    没加foreach循环处理时输出正常,加了之后不正常了
      

  9.   

    foreach ($attr_val_arr as $v)
      

  10.   


    为何要用引用 &$v ?用唠叨老大的写法吧,简单些
      

  11.   

    去掉&也会影响到前台显示
      

  12.   


    没加foreach循环不就是你原来的程序么?怎么又说正常呢?别搞那么多了,直接用唠叨老大写的这个
    $attr_val_arr = split("[\r\n]+", $attr_val_list);
    替换你原来那条语句,这样不需要用foreach了
      

  13.   

    用这个函数处理下也可以function trim_array($totrim) 
    {
       if (is_array($totrim)) 
       {
        $totrim = array_map("trim_array", $totrim);
       } 
       else 
       {
        $totrim = trim($totrim);
       }
       return $totrim;
    }