<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]用php过滤前端textarea传过来字符串里的多余空行（多行换行），PHP实现ASCII码与字符串相互转换的方法。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Tue, 23 Oct 2018 06:37:09 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：过滤从前端textarea里传过来的字符串里有空行。<br/>如：<br/>1212<br/>2121<br/><br/>1222<br/>测试了一下发现写入文件是：<br/>#cat input.txt <br/>1212<br/>2121<br/><br/>1222<br/>出现多了两个竖线的原因是上面这个空行：<br/>grep -Erin &quot;1212&#124;2121&#124;&#124;1222&quot;<br/><br/>那么，想去掉这个串里的空的行，怎么办？<br/><br/><textarea name="code" class="php" rows="15" cols="100">
#cat input.txt 
1212
2121

1222root@jackxiang-owncloud_nginx-php-mysql-redis_47_94_88_237:/tmp#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#php -a
Interactive shell

php &gt; $contents=file_get_contents(&quot;/tmp/input.txt&quot;);
php &gt; echo $contents;
1212
2121

1222
php &gt; $str = preg_replace(&#039;/[&#92;r&#92;n]+/&#039;, &quot;&#92;n&quot;, $contents);&nbsp;&nbsp; 
php &gt; echo $str;
1212
2121
1222
php &gt;

</textarea><br/><br/>来自：https://zhidao.baidu.com/question/808190628151611092.html<br/><br/>想要的结果是，而不是多一个&#124;&#124;，如下：<br/>grep -Erin &quot;1212&#124;2121&#124;&#124;1222&quot;<br/>想要：<br/>grep -Erin &quot;1212&#124;2121&#124;1222&quot;<br/><br/><br/><textarea name="code" class="php" rows="15" cols="100">
&nbsp;&nbsp;&nbsp;&nbsp; &#125;else if(empty($rightContents))&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $leftContents = preg_replace(&#039;/[&#92;r&#92;n]+/&#039;, &quot;&#92;n&quot;, $leftContents);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file_put_contents(&quot;/tmp/input.txt&quot;,$leftContents);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $lcontents = str_replace(array(&quot;&#92;r&#92;n&quot;, &quot;&#92;r&quot;, &quot;&#92;n&quot;), &quot;&#124;&quot;, $leftContents);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ocontents = &quot;grep -Erin &#92;&quot;&quot;.$lcontents.&quot;&#92;&quot;&quot;;
&nbsp;&nbsp;&nbsp;&nbsp; &#125;
</textarea><br/><br/><br/>PHP实现ASCII码与字符串相互转换的方法，主要想看换行里是&#92;n还是&#92;r&#92;n,当然也可以在PHP写入文件后sz下来用FlexHEX编辑器看：<br/>31 32 31 32 0A 32 31 32 31 0A 0A 31 32 32 32&nbsp;&nbsp;&lt;===1212<br/>2121<br/><br/>1222<br/><br/>上面的0A就是10，也就是&#92;n,如下：<br/>php &gt; echo ord(1);<br/>49<br/>php &gt; echo ord(2); <br/>50<br/>php &gt; echo ord(&#92;n);<br/>PHP Fatal error:&nbsp;&nbsp;Undefined constant &#039;n&#039; in php shell code on line 1<br/>php &gt; echo ord(&quot;&#92;n&quot;);<br/>10<br/>用PHP看：<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
class ascii &#123;
&nbsp;&nbsp;/**
&nbsp;&nbsp; * 将ascii码转为字符串
&nbsp;&nbsp; * @param type $str 要解码的字符串
&nbsp;&nbsp; * @param type $prefix 前缀，默认:&amp;#
&nbsp;&nbsp; * @return type
&nbsp;&nbsp; */
&nbsp;&nbsp;function decode($str, $prefix=&quot;&amp;#&quot;) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$utf = &quot;&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;$str = str_replace($prefix, &quot;&quot;, $str);
&nbsp;&nbsp;&nbsp;&nbsp;$a = explode(&quot;;&quot;, $str);
&nbsp;&nbsp;&nbsp;&nbsp;foreach ($a as $dec) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($dec &lt; 128) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$utf .= chr($dec);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else if ($dec &lt; 2048) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$utf .= chr(192 + (($dec - ($dec % 64)) / 64));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$utf .= chr(128 + ($dec % 64));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$utf .= chr(224 + (($dec - ($dec % 4096)) / 4096));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$utf .= chr(128 + ($dec % 64));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;return $utf;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;/**
&nbsp;&nbsp; * 将字符串转换为ascii码
&nbsp;&nbsp; * @param type $c 要编码的字符串
&nbsp;&nbsp; * @param type $prefix 前缀，默认：&amp;#
&nbsp;&nbsp; * @return string
&nbsp;&nbsp; */
&nbsp;&nbsp;function encode($c, $prefix=&quot;&amp;#&quot;) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$scill = &quot;&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;$len = strlen($c);
&nbsp;&nbsp;&nbsp;&nbsp;$a = 0;
&nbsp;&nbsp;&nbsp;&nbsp;while ($a &lt; $len) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ud = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ord($c&#123;$a&#125;) &gt;= 0 &amp;&amp; ord($c&#123;$a&#125;) &lt;= 127) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ud = ord($c&#123;$a&#125;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$a += 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else if (ord($c&#123;$a&#125;) &gt;= 192 &amp;&amp; ord($c&#123;$a&#125;) &lt;= 223) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ud = (ord($c&#123;$a&#125;) - 192) * 64 + (ord($c&#123;$a + 1&#125;) - 128);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$a += 2;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else if (ord($c&#123;$a&#125;) &gt;= 224 &amp;&amp; ord($c&#123;$a&#125;) &lt;= 239) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ud = (ord($c&#123;$a&#125;) - 224) * 4096 + (ord($c&#123;$a + 1&#125;) - 128) * 64 + (ord($c&#123;$a + 2&#125;) - 128);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$a += 3;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else if (ord($c&#123;$a&#125;) &gt;= 240 &amp;&amp; ord($c&#123;$a&#125;) &lt;= 247) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ud = (ord($c&#123;$a&#125;) - 240) * 262144 + (ord($c&#123;$a + 1&#125;) - 128) * 4096 + (ord($c&#123;$a + 2&#125;) - 128) * 64 + (ord($c&#123;$a + 3&#125;) - 128);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$a += 4;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else if (ord($c&#123;$a&#125;) &gt;= 248 &amp;&amp; ord($c&#123;$a&#125;) &lt;= 251) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ud = (ord($c&#123;$a&#125;) - 248) * 16777216 + (ord($c&#123;$a + 1&#125;) - 128) * 262144 + (ord($c&#123;$a + 2&#125;) - 128) * 4096 + (ord($c&#123;$a + 3&#125;) - 128) * 64 + (ord($c&#123;$a + 4&#125;) - 128);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$a += 5;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else if (ord($c&#123;$a&#125;) &gt;= 252 &amp;&amp; ord($c&#123;$a&#125;) &lt;= 253) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ud = (ord($c&#123;$a&#125;) - 252) * 1073741824 + (ord($c&#123;$a + 1&#125;) - 128) * 16777216 + (ord($c&#123;$a + 2&#125;) - 128) * 262144 + (ord($c&#123;$a + 3&#125;) - 128) * 4096 + (ord($c&#123;$a + 4&#125;) - 128) * 64 + (ord($c&#123;$a + 5&#125;) - 128);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$a += 6;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else if (ord($c&#123;$a&#125;) &gt;= 254 &amp;&amp; ord($c&#123;$a&#125;) &lt;= 255) &#123; //error
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ud = false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$scill .= $prefix.$ud.&quot;;&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;return $scill;
&nbsp;&nbsp;&#125;
&#125;
/*
 PHP 转 ASCII
 require_once &quot;ascii_class.php&quot;;
*/
$contents=file_get_contents(&quot;/tmp/input.txt&quot;); 
$aa = new ascii;
echo &quot;&lt;xmp&gt;&quot;;
echo $str = $aa-&gt;encode($contents);
echo &quot;&lt;/xmp&gt;&quot;;
echo $aa-&gt;decode($str);
?&gt;

</textarea><br/>php /tmp/ascii.php <br/>&lt;xmp&gt;&amp;#49;&amp;#50;&amp;#49;&amp;#50;&amp;#10;&amp;#50;&amp;#49;&amp;#50;&amp;#49;&amp;#10;&amp;#10;&amp;#49;&amp;#50;&amp;#50;&amp;#50;&lt;/xmp&gt;1212<br/>2121<br/><br/>1222<br/><br/>所以，结论是这个&#92;r其实是没有必要的，下面这一行就行，当然平台可能是&#92;r&#92;n于是得加上：<br/>//$leftContents = preg_replace(&#039;/[&#92;r&#92;n]+/&#039;, &quot;&#92;n&quot;, $leftContents);<br/>$leftContents = preg_replace(&#039;/[&#92;n]+/&#039;, &quot;&#92;n&quot;, $leftContents);&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/>正则的意思是无论是&#92;r&#92;n&#92;r&#92;n还是&#92;n&#92;n都能被替换为一个斜杠n ,&#92;n:<br/>php &gt; $contents = preg_replace(&#039;/&#92;n&#92;n/&#039;, &quot;&#92;r&#92;n&#92;r&#92;n&quot;, $contents);&nbsp;&nbsp; <br/>php &gt; echo $contents;<br/>1212<br/>2121<br/><br/>1222<br/>php &gt; $str = preg_replace(&#039;/[&#92;r&#92;n]+/&#039;, &quot;&#92;n&quot;, $contents);<br/>php &gt; echo $str;<br/>1212<br/>2121<br/>1222<br/><br/>一个Window的&#92;r&#92;n和一个unix的&#92;n，这个正则一样能替换，反之一样：<br/>php &gt; $contents = preg_replace(&#039;/&#92;n&#92;n/&#039;, &quot;&#92;r&#92;n&#92;n&quot;, $contents);&nbsp;&nbsp;&nbsp;&nbsp; <br/>php &gt; echo $contents;<br/>1212<br/>2121<br/><br/>1222<br/>php &gt; $str = preg_replace(&#039;/[&#92;r&#92;n]+/&#039;, &quot;&#92;n&quot;, $contents);<br/>php &gt; echo $str;<br/>1212<br/>2121<br/>1222<br/><br/>反之亦然：<br/>php &gt; $contents=file_get_contents(&quot;/tmp/input.txt&quot;);<br/>php &gt; echo $contents;<br/>1212<br/>2121<br/><br/>1222<br/>php &gt; $contents = preg_replace(&#039;/&#92;n&#92;n/&#039;, &quot;&#92;n&#92;r&#92;n&quot;, $contents);&nbsp;&nbsp; <br/>php &gt; echo $contents;<br/>1212<br/>2121<br/><br/>1222<br/>php &gt; $str = preg_replace(&#039;/[&#92;r&#92;n]+/&#039;, &quot;&#92;n&quot;, $contents);<br/>php &gt; echo $str;<br/>1212<br/>2121<br/>1222<br/><br/>对于这个+号，查了一下正则：<br/>man awk<br/>/Regular Expressions<br/><br/>. 任意字符<br/>问家兴：（问加星）<br/>?&nbsp;&nbsp; 0或1次<br/>+&nbsp;&nbsp;1次或多次&nbsp;&nbsp;&nbsp;&nbsp;#man awk&nbsp;&nbsp;Regular Expressions , r+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; matches one or more r&#039;s.<br/>*&nbsp;&nbsp; 0次或N次<br/><br/>也就是一次或多次，对于&#92;r&#92;n就像[a-z0-9]一个道理，&#92;r和&#92;n分别表示一个字符，可一块，总之一次或多次，于是：<br/>&#92;r&#92;n&#92;r&#92;n&nbsp;&nbsp;,&#92;n&#92;n,&#92;r&#92;n&#92;n,&#92;n&#92;r&#92;n都能匹配，长时间不写PHP快忘光了，嗨。<br/><br/>同时，网上还有法二先用换行去转成数组，再用数组里去掉空元素array_filter：<br/>// 该函数把输入数组中的每个键值传给回调函数。如果回调函数返回true，则把输入数组中的当前键值返回结果数组中。数组键名保持不变。若无回调函数，则将TRUE的值返回，即可以使用它来过滤空元素<br/>$arr = array(0, 1, 4, &#039;&#039;,null, &#039;0&#039;, 23);<br/>$arr = array_filter($arr);// array(1=&gt;1, 2=&gt;4, &#039;6&#039;=&gt;23) 下标不改变,使用array_values(),改变下标<br/>1.去除空行<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
$str = file_get_contents(&#039;a.txt&#039;);
$str = explode(PHP_EOL, $str);&nbsp;&nbsp;&nbsp;&nbsp;//分割为数组，每行为一个数组元素
$str = array_filter($str);&nbsp;&nbsp;&nbsp;&nbsp;//去除数组中的空元素
$str = implode(PHP_EOL,$str);&nbsp;&nbsp;&nbsp;&nbsp;//用换行符连结数组为字符串
file_put_contents(&#039;b.txt&#039;,$str);
</textarea><br/><br/><br/>来自：https://www.cnblogs.com/chenqionghe/p/4293852.html<br/><br/><br/>
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]用php过滤前端textarea传过来字符串里的多余空行（多行换行），PHP实现ASCII码与字符串相互转换的方法。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>