您的位置:

解决php中file(php问题)

本文目录一览:

对于PHP中file_get_contents 中文乱码有什么解决方案吗?

解决代码逻辑如下

$content = '';

$text = file_get_contents($file);

//$encodType = mb_detect_encoding($text);

define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));

define('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));

define('UTF16_BIG_ENDIAN_BOM', chr(0xFE) . chr(0xFF));

define('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));

define('UTF8_BOM', chr(0xEF) . chr(0xBB) . chr(0xBF));

$first2 = substr($text, 0, 2);

$first3 = substr($text, 0, 3);

$first4 = substr($text, 0, 3);

$encodType = "";

if (UTF8_BOM == $first3) {

$encodType = 'UTF-8 BOM';

} else if (UTF32_BIG_ENDIAN_BOM == $first4) {

$encodType = 'UTF-32BE';

} else if (UTF32_LITTLE_ENDIAN_BOM == $first4) {

$encodType = 'UTF-32LE';

} else if (UTF16_BIG_ENDIAN_BOM == $first2) {

$encodType = 'UTF-16BE';

} else if (UTF16_LITTLE_ENDIAN_BOM == $first2) {

$encodType = 'UTF-16LE';

}

//下面的判断主要还是判断ANSI编码的·

if ('' == $encodType) {

//即默认创建的txt文本-ANSI编码的

$content = iconv("GBK", "UTF-8", $text);

} else if ('UTF-8 BOM' == $encodType) {

//本来就是UTF-8不用转换

$content = $text;

} else {

//其他的格式都转化为UTF-8就可以了

$content = iconv($encodType, "UTF-8", $text);

} (BY三人行慕课)

PHP中有两个读文件函数,file()和file_get_contents(),这两个函数有何差异?

PHP中file() 函数和file_get_contents() 函数的作用都是将整个文件读入某个介质,其主要区别就在于这个介质的不同。file() 函数是将文件读入一个数组中,而file_get_contents()是将文件读入一个字符串中。

file() 函数是把整个文件读入一个数组中,然后将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回 false。

file_get_contents() 函数是把整个文件读入一个字符串中。和 file() 一样,不同的是file_get_contents() 把文件读入一个字符串。file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。

PHP file_get_contents 函数超时的几种解决方法

这里就简单介绍两种:

一、增加超时的时间限制

这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间。

我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改file_get_contents延时可以用resource

$context的timeout参数:

复制代码

代码如下:

$opts

=

array(

‘http'=array(

‘method'=”GET”,

‘timeout'=60,

)

);

$context

=

stream_context_create($opts);

$html

=file_get_contents('',

false,

$context);

fpassthru($fp);

二、一次有延时的话那就多试几次

有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失败将返回

FALSE,所以可以下面这样编写代码:

复制代码

代码如下:

$cnt=0;

while($cnt

3

($str=@file_get_contents('http…'))===FALSE)

$cnt++;

为什么在服务器上php里执行file

1. 我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;

2. PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);

3. PHP总共有三个模块:内核、Zend引擎、以及扩展层;

4. PHP内核用来处理请求、文件流、错误处理等相关操作;

5. Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;

6. 扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要mysql扩展来连接MySQL数据库;

7. 当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;

8. 最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。