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

xiaoxiao2021-02-28  119

最近在写一个网站,增加信息的方法有“在网页上手工写入”和“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; }

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

转载请注明原文地址: https://www.6miu.com/read-31231.html

最新回复(0)