在php函数中,一般分隔字符串会想到explode函数。但是这个explode的很有局限行。
下面说一下我在实际开发中遇到的问题。
有一个test.txt文件,有id,name,phone,id_card_number四列,里面的空格是不规则的。
这个内容读出来以后,用explode函数是分隔不了的(因为是tab空格,而不是单个的字符串空格)。必须用preg_split函数才行。
function test(){
$file = 'text.txt';
$fp = fopen($file, "r");
$list= array();
$i = 0;
while (!feof($fp)) {
$list[$i] = fgets($fp);
$i++;
}
fclose($fp);
foreach ($list as $val) {
if (!empty($val)) {
$arr = preg_split('/\s+/is',$val);
$data = array(
'id' => trim($arr[0]),
'real_name' => trim($arr[1]),
'phone' => trim($arr[2]),
'id_card_number' => trim($arr[3]),
);
//写入数据库,省略.....
}
}
}
另外:
explode还有一个limit参数:
如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。
如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。
如果 limit 是 0,则会被当做 1。
preg_split 可以除了分隔普通的字符,还能分隔特殊的字符(比如tab空格键 回车 | \ 等等元字符)