首頁 >php教程 >php手册 >php检测文件编码方法[非完美]

php检测文件编码方法[非完美]

WBOY
WBOY原創
2016-06-13 09:45:14959瀏覽

很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出、
看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱、
最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数,
还包括自动检测编码并按指点编码读取文件的函数、
源码献上,不喜勿喷。
网上的方法我试过没用才写的,说不定环境不一样导致的。
所以万一没用,也别喷我,我只是共享想思路而已、、
<span  1</span> <?<span php
</span><span  2</span> <span /*</span><span *
</span><span  3</span> <span  * 检测文件编码
</span><span  4</span> <span  * @param string $file 文件路径
</span><span  5</span> <span  * @return string|null 返回 编码名 或 null
</span><span  6</span>  <span */</span>
<span  7</span> <span function</span> detect_encoding(<span $file</span><span ) {
</span><span  8</span>     <span $list</span> = <span array</span>('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1'<span );
</span><span  9</span>     <span $str</span> = <span file_get_contents</span>(<span $file</span><span );
</span><span 10</span>     <span foreach</span> (<span $list</span> <span as</span> <span $item</span><span ) {
</span><span 11</span>         <span $tmp</span> = mb_convert_encoding(<span $str</span>, <span $item</span>, <span $item</span><span );
</span><span 12</span>         <span if</span> (<span md5</span>(<span $tmp</span>) == <span md5</span>(<span $str</span><span )) {
</span><span 13</span>             <span return</span> <span $item</span><span ;
</span><span 14</span> <span         }
</span><span 15</span> <span     }
</span><span 16</span>     <span return</span> <span null</span><span ;
</span><span 17</span> <span }
</span><span 18</span> 
<span 19</span> <span /*</span><span *
</span><span 20</span> <span  * 自动解析编码读入文件
</span><span 21</span> <span  * @param string $file 文件路径
</span><span 22</span> <span  * @param string $charset 读取编码
</span><span 23</span> <span  * @return string 返回读取内容
</span><span 24</span>  <span */</span>
<span 25</span> <span function</span> auto_read(<span $file</span>, <span $charset</span>='UTF-8'<span ) {
</span><span 26</span>     <span $list</span> = <span array</span>('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1'<span );
</span><span 27</span>     <span $str</span> = <span file_get_contents</span>(<span $file</span><span );
</span><span 28</span>     <span foreach</span> (<span $list</span> <span as</span> <span $item</span><span ) {
</span><span 29</span>         <span $tmp</span> = mb_convert_encoding(<span $str</span>, <span $item</span>, <span $item</span><span );
</span><span 30</span>         <span if</span> (<span md5</span>(<span $tmp</span>) == <span md5</span>(<span $str</span><span )) {
</span><span 31</span>             <span return</span> mb_convert_encoding(<span $str</span>, <span $charset</span>, <span $item</span><span );
</span><span 32</span> <span         }
</span><span 33</span> <span     }
</span><span 34</span>     <span return</span> ""<span ;
</span><span 35</span> }
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn