一个字符串是以回车换行为分割进行保存的,分割为数组后,里面的每一个值应该没有回车换行符了,可是部分值还有回车换行(就是输出的值以记事本打开后,发下部分值后面另起一行才输出下一个值),怎么回事?
$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>
$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>
<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 />";
//上面错了,应该是\r\n
$attr_val_arr = explode("\r\n", $attr_vall_list);
不是运行平台,是你的字串来源
如果不确定的话,用\n分割,然后数组每个字串再用trim去掉首尾空白
当然,如果首尾有空格要保留就要另外想办法
//是不是可以这样处理一下:
$attr_vall_list = str_replace("\r\n","\n",$attr_vall_list);
$attr_val_arr = explode("\n", $attr_vall_list);
$attr_val_arr = split("[\r\n]+", $attr_val_list);如果你不喜欢用 split 函数,可以这样写
$attr_val_arr = array_map('trim', explode("\n", $attr_val_list) );
$attr_val_arr = explode("\n", $attr_val_list);
// print_r($attr_val_arr);
foreach ($attr_val_arr as &$v)
{
trim($v);
}
没加foreach循环处理时输出正常,加了之后不正常了
为何要用引用 &$v ?用唠叨老大的写法吧,简单些
没加foreach循环不就是你原来的程序么?怎么又说正常呢?别搞那么多了,直接用唠叨老大写的这个
$attr_val_arr = split("[\r\n]+", $attr_val_list);
替换你原来那条语句,这样不需要用foreach了
{
if (is_array($totrim))
{
$totrim = array_map("trim_array", $totrim);
}
else
{
$totrim = trim($totrim);
}
return $totrim;
}