PHP网页输入框中的换行与PHP读入的Excel换行的区别

最近在写一个网站,增加信息的方法有“在网页上手工写入”和“Excel文件导入”。但是在计算导入信息的“行数”是否大于3时,发现两种数据写入方法的换行不一样,数据库中又没有区分导入方法的字段,所以我只能写一个function去区别。


【首先】 PHP中:
“\r” == chr(13),表示移动到当前行的最左边;
“\n” == chr(10),表示移动到下一行,不左右移动;

【不同之处】 通过PHP代码导入到数据库的文本:
1、网页上,换行为“\r\n”;
2、Excel文件中,换行为“\n”,即chr(10);

【举个例子】
1、网页输入字符串:

hello
world

则文本会在数据库中以”hello\r\nworld”的方式存储(网页上是看不到\r\n的,而字符串中会存\r\n)

1、Excel表格输入字符串:

hello
world

则文本会在数据库中以”hello\nworld”的方式存储

【处理办法】
因为两者都有”\n”字符,所以我直接以”\n”字符作为分界点拆分字符串。

【拆分情况】
1、网页传入的数据会被拆分为”hello\r”、”world”两项;
2、Excel传入的数据会被拆分为”hello”、”world”两项;
【结果】数量相同,不影响。

再看一种情况:“hello”和“world”之间有一行是没有文本的,换句话说就是中间空了一行:

hello

word

【拆分情况】
1、网页传入的数据会被拆分为”hello\r”、”\r”、”world”三项;
2、Excel传入的数据会被拆分为”hello”、”“、”world”三项(中间一项为空串);

【结果】数量相同,但明显空串和”\r”项不应该计入行数。

【增加处理办法】还要判断:
1. 是否是空串;
2. 是否只是一个”\r”字符。

最终解决办法【function】如下:

# $testStr 为网页写入的文本或Excel导入的文本
function Test($testStr)
{
    $count = 0;

    # 以chr(10)为分界点拆分字符串,chr(10)也可以换成"\n"
    $strtmp = explode(chr(10),$testStr);

    foreach($strtmp as $onestr){
        # 1. 文本长度大于1,说明除\r外还有其它字符
        # 2. 文本长度为1且字符为\r,则无效
        # 3. 文本长度为0的情况,无效
        $count += strlen($onestr)>1||(!(""==$onestr)||("\r"==$onestr[0]))?1:0;

        # 若有效行数已经等于3,则返回true
        if($count>=3) {
             return true;
        }
    }
   return false;
}

时间比较紧,先写这么多吧,有什么问题大家可以相互交流交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值