{"id":266,"date":"2014-07-23T13:19:50","date_gmt":"2014-07-23T13:19:50","guid":{"rendered":"http:\/\/blog.yyhcw.com\/post\/266.html"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T07:54:17","slug":"php-bom","status":"publish","type":"post","link":"http:\/\/blog.yyhcw.com\/post\/266.html","title":{"rendered":"php \u53bb\u9664bom \u6279\u91cf\u79fb\u9664PHP\u4e2dBOM\u7684\u65b9\u6cd5"},"content":{"rendered":"<!--wp-compress-html--><!--wp-compress-html no compression--><p>\u65e0\u804a\u5728\u5f00\u6e90\u4e2d\u56fd\u95f2\u901b\u53d1\u73b0\u4e00\u4e2a\u4e0d\u9519\u7684\u53bb\u9664BOM\u7684\u65b9\u6cd5\uff0c\u5f88\u662f\u4e0d\u9519\uff0c\u7279\u6536\u96c6\u8fc7\u6765\u4ee5\u5907\u4e0d\u65f6\u4e4b\u9700\uff1a<\/p>\n<pre class=\"brush:php;toolbar:false\">&lt;?php\r\nheader(&#39;content-Type:&nbsp;text\/html;&nbsp;charset=utf-8&#39;);\r\nif(isset($_GET[&#39;dir&#39;])){&nbsp;\/\/\u8bbe\u7f6e\u6587\u4ef6\u76ee\u5f55\uff0c\u5982\u679c\u6ca1\u6709\u8bbe\u7f6e\uff0c\u5219\u81ea\u52a8\u8bbe\u7f6e\u4e3a\u5f53\u524d\u6587\u4ef6\u6240\u5728\u76ee\u5f55\r\n&nbsp;&nbsp;&nbsp;&nbsp;$basedir=$_GET[&#39;dir&#39;];\r\n}else{\r\n&nbsp;&nbsp;&nbsp;&nbsp;$basedir=&#39;.&#39;;\r\n}\r\n$auto=1;\/*\u8bbe\u7f6e\u4e3a1\u6807\u793a\u68c0\u6d4bBOM\u5e76\u53bb\u9664\uff0c\u8bbe\u7f6e\u4e3a0\u6807\u793a\u53ea\u8fdb\u884cBOM\u68c0\u6d4b\uff0c\u4e0d\u53bb\u9664*\/\r\n\r\necho&nbsp;&#39;\u5f53\u524d\u67e5\u627e\u7684\u76ee\u5f55\u4e3a\uff1a&#39;.$basedir.&#39;\u5f53\u524d\u7684\u8bbe\u7f6e\u662f\uff1a&#39;;\r\necho&nbsp;$auto?&#39;\u68c0\u6d4b\u6587\u4ef6BOM\u540c\u65f6\u53bb\u9664\u68c0\u6d4b\u5230BOM\u6587\u4ef6\u7684BOM&lt;br&nbsp;\/&gt;&#39;:&#39;\u53ea\u68c0\u6d4b\u6587\u4ef6BOM\u4e0d\u6267\u884c\u53bb\u9664BOM\u64cd\u4f5c&lt;br&nbsp;\/&gt;&#39;;\r\n\r\ncheckdir($basedir);\r\nfunction&nbsp;checkdir($basedir){\r\n&nbsp;&nbsp;&nbsp;&nbsp;if($dh=opendir($basedir)){\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(($file=readdir($dh))&nbsp;!==&nbsp;false){\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($file&nbsp;!=&nbsp;&#39;.&#39;&nbsp;&amp;&amp;&nbsp;$file&nbsp;!=&nbsp;&#39;..&#39;){\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!is_dir($basedir.&#39;\/&#39;.$file)){\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&#39;\u6587\u4ef6:&nbsp;&#39;.$basedir.&#39;\/&#39;.$file&nbsp;.checkBOM($basedir.&#39;\/&#39;.$file).&#39;&nbsp;&lt;br&gt;&#39;;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dirname=$basedir.&#39;\/&#39;.$file;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkdir($dirname);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closedir($dh);\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}\r\nfunction&nbsp;checkBOM($filename){\r\n&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;$auto;\r\n&nbsp;&nbsp;&nbsp;&nbsp;$contents=file_get_contents($filename);\r\n&nbsp;&nbsp;&nbsp;&nbsp;$charset[1]=substr($contents,0,1);\r\n&nbsp;&nbsp;&nbsp;&nbsp;$charset[2]=substr($contents,1,1);\r\n&nbsp;&nbsp;&nbsp;&nbsp;$charset[3]=substr($contents,2,1);\r\n&nbsp;&nbsp;&nbsp;&nbsp;if(ord($charset[1])==239&nbsp;&amp;&amp;&nbsp;ord($charset[2])==187&nbsp;&amp;&amp;&nbsp;ord($charset[3])==191){\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($auto==1){\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rest=substr($contents,3);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite($filename,$rest);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(&#39;&nbsp;&lt;font&nbsp;color=red&gt;\u627e\u5230BOM\u5e76\u5df2\u81ea\u52a8\u53bb\u9664&lt;\/font&gt;&#39;);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(&#39;&nbsp;&lt;font&nbsp;color=red&gt;\u627e\u5230BOM&lt;\/font&gt;&#39;);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}else{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(&#39;&nbsp;\u6ca1\u6709\u627e\u5230BOM&#39;);\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}\r\nfunction&nbsp;rewrite($filename,$data){\r\n&nbsp;&nbsp;&nbsp;&nbsp;$filenum=fopen($filename,&#39;w&#39;);\r\n&nbsp;&nbsp;&nbsp;&nbsp;flock($filenum,LOCK_EX);\r\n&nbsp;&nbsp;&nbsp;&nbsp;fwrite($filenum,$data);\r\n&nbsp;&nbsp;&nbsp;&nbsp;fclose($filenum);\r\n}\r\n?&gt;<\/pre>\n<p>\u5982\u679c\u4f60\u6709\u66f4\u597d\u7684\u529e\u6cd5\uff0c\u4e5f\u53ef\u4ee5\u7559\u8a00\u4ea4\u6d41\uff01<\/p>\n<!--wp-compress-html no compression--><!--wp-compress-html-->","protected":false},"excerpt":{"rendered":"\u65e0\u804a\u5728\u5f00\u6e90\u4e2d\u56fd\u95f2\u901b\u53d1\u73b0\u4e00\u4e2a\u4e0d\u9519\u7684\u53bb\u9664BOM\u7684\u65b9\u6cd5\uff0c\u5f88\u662f\u4e0d\u9519\uff0c\u7279\u6536\u96c6\u8fc7\u6765\u4ee5\u5907\u4e0d\u65f6\u4e4b\u9700\uff1a &lt;?php hea \u00b7\u00b7\u00b7","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"views":346,"_links":{"self":[{"href":"http:\/\/blog.yyhcw.com\/api\/wp\/v2\/posts\/266"}],"collection":[{"href":"http:\/\/blog.yyhcw.com\/api\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.yyhcw.com\/api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.yyhcw.com\/api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.yyhcw.com\/api\/wp\/v2\/comments?post=266"}],"version-history":[{"count":0,"href":"http:\/\/blog.yyhcw.com\/api\/wp\/v2\/posts\/266\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.yyhcw.com\/api\/wp\/v2\/media?parent=266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.yyhcw.com\/api\/wp\/v2\/categories?post=266"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.yyhcw.com\/api\/wp\/v2\/tags?post=266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}