标题:[实践OK]用php过滤前端textarea传过来字符串里的多余空行(多行换行),PHP实现ASCII码与字符串相互转换的方法。 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Tue, 23 Oct 2018 14:37:09 +0000 作者:jackxiang 地址:http://jackxiang.com/post/9927/ 内容: 背景:过滤从前端textarea里传过来的字符串里有空行。 如: 1212 2121 1222 测试了一下发现写入文件是: #cat input.txt 1212 2121 1222 出现多了两个竖线的原因是上面这个空行: grep -Erin "1212|2121||1222" 那么,想去掉这个串里的空的行,怎么办? #cat input.txt 1212 2121 1222root@jackxiang-owncloud_nginx-php-mysql-redis_47_94_88_237:/tmp# #php -a Interactive shell php > $contents=file_get_contents("/tmp/input.txt"); php > echo $contents; 1212 2121 1222 php > $str = preg_replace('/[\r\n]+/', "\n", $contents); php > echo $str; 1212 2121 1222 php > 来自:https://zhidao.baidu.com/question/808190628151611092.html 想要的结果是,而不是多一个||,如下: grep -Erin "1212|2121||1222" 想要: grep -Erin "1212|2121|1222" }else if(empty($rightContents)){ $leftContents = preg_replace('/[\r\n]+/', "\n", $leftContents); file_put_contents("/tmp/input.txt",$leftContents); $lcontents = str_replace(array("\r\n", "\r", "\n"), "|", $leftContents); $ocontents = "grep -Erin \"".$lcontents."\""; } PHP实现ASCII码与字符串相互转换的方法,主要想看换行里是\n还是\r\n,当然也可以在PHP写入文件后sz下来用FlexHEX编辑器看: 31 32 31 32 0A 32 31 32 31 0A 0A 31 32 32 32 <===1212 2121 1222 上面的0A就是10,也就是\n,如下: php > echo ord(1); 49 php > echo ord(2); 50 php > echo ord(\n); PHP Fatal error: Undefined constant 'n' in php shell code on line 1 php > echo ord("\n"); 10 用PHP看: = 0 && ord($c{$a}) <= 127) { $ud = ord($c{$a}); $a += 1; } else if (ord($c{$a}) >= 192 && ord($c{$a}) <= 223) { $ud = (ord($c{$a}) - 192) * 64 + (ord($c{$a + 1}) - 128); $a += 2; } else if (ord($c{$a}) >= 224 && ord($c{$a}) <= 239) { $ud = (ord($c{$a}) - 224) * 4096 + (ord($c{$a + 1}) - 128) * 64 + (ord($c{$a + 2}) - 128); $a += 3; } else if (ord($c{$a}) >= 240 && ord($c{$a}) <= 247) { $ud = (ord($c{$a}) - 240) * 262144 + (ord($c{$a + 1}) - 128) * 4096 + (ord($c{$a + 2}) - 128) * 64 + (ord($c{$a + 3}) - 128); $a += 4; } else if (ord($c{$a}) >= 248 && ord($c{$a}) <= 251) { $ud = (ord($c{$a}) - 248) * 16777216 + (ord($c{$a + 1}) - 128) * 262144 + (ord($c{$a + 2}) - 128) * 4096 + (ord($c{$a + 3}) - 128) * 64 + (ord($c{$a + 4}) - 128); $a += 5; } else if (ord($c{$a}) >= 252 && ord($c{$a}) <= 253) { $ud = (ord($c{$a}) - 252) * 1073741824 + (ord($c{$a + 1}) - 128) * 16777216 + (ord($c{$a + 2}) - 128) * 262144 + (ord($c{$a + 3}) - 128) * 4096 + (ord($c{$a + 4}) - 128) * 64 + (ord($c{$a + 5}) - 128); $a += 6; } else if (ord($c{$a}) >= 254 && ord($c{$a}) <= 255) { //error $ud = false; } $scill .= $prefix.$ud.";"; } return $scill; } } /* PHP 转 ASCII require_once "ascii_class.php"; */ $contents=file_get_contents("/tmp/input.txt"); $aa = new ascii; echo "