phpfgets
1. php中fgetc,fgets,fgetss三者的区别
一、功能区别
fgetc — 从文件指针中读取字符
fgets — 从文件指针中读取一行
fgetss — 从文件指针中读取一行并过滤掉 HTML 标记
二、原型区别
string fgetc(resource $handle)
string fgets(resource $handle[, int $length])
string fgetss(resource $handle[, int $length[, string $allowable_tags]])
三、返回值区别
fgetc:返回一个包含有一个字符的字符串,该字符从 handle 指向的文件中得到。碰到 EOF 则返回 FALSE。
fgets:从指针 handle 指向的文件中读取了 length - 1 字节后返回字符串。如果文件指针中没有更多的数据了则返回 FALSE。错误发生时返回 FALSE。
fgetss:从 handle 指向的文件中大读取 length - 1 个字节的字符,并过滤了所有的 HTML 和 PHP 代码。错误发生时返回 FALSE。
2. php fgets问题
看我调试成功的代码:
<?php
//$fp = stream_socket_client($socketUrl, $errno, $errstr, 30);
$retMsg="";
//if (!$fp) {
// echo "$errstr ($errno)<br />\n";
//} else {
$in = "<?xml version='1.0' encoding='UTF-8'?>";
$in .= "<Message>";
$in .= "<TranCode>888</TranCode>";
$in .= "<MsgContent>666</MsgContent>";
$in .= "</Message>";
$fp= fopen("1.xml","w");
fwrite($fp, $in,1024);
fclose($fp);
$fp= fopen("1.xml","r");
while (!feof($fp)) {
$retMsg =$retMsg.fgets($fp, 1024) or exit("Can't fgets");
}
echo $retMsg;
fclose($fp);
//}
?>
3. 请问PHP中怎么用fgets()读取整个文件和在readfile()中怎么实现换行啊,着急
fgets一次只读一行,要用它读取整个文件需要使用循环,例如下面这样:
<?php
$fp=fopen('a.html','r');
while(!feof($fp)){
$str=fgets($fp);
echo $str;
}
fclose($fp);
?>
readfile读取的文件是有换行的,但是直接输出到浏览器时候,浏览器会忽略里面多余的空格和换行,可以下面这样:
<?php
echo '<pre>';
readfile('a.html');
echo '</pre>';
?>
4. php5.0 使用 fgets()函数是读取中文文件,显示乱码,求解谢谢
你必须知道你的中文文本文件使用的编码方式,默认的可能是windows-1252(ANSI),乱码的原因就是文本文件的编码和你的浏览器页面charset指定的编码不一致造成的,可以在输出之前对内容执行 $content = iconv('文本文件的编码格式,如windows-1252', '浏览器charset,如utf-8', $content)就行了
5. php中fgets()与fread()有什么区别
fgets 从可访问的文件流里读取一行。以换行符结束。或者读够指定的字数。或者碰到文件结尾。。看先碰到哪一种情况。
fread 从可访问的文件流里读取一定的字数。默认为 1024 字节。或者碰到文件结尾。看先碰到哪一种情况。。
两者主要区别在于。 fgets 碰到换行符的时候。也会停止读取。而 fread 不会。相同的部份就是。文件读完。或者读够指定的字节数。都会停止。
换行符局限于 \r\a 或 \a 二进制为 0x0D0A 或 0x0A ,也就是你在编写文件时输入的回车。HTML 的 <br> 不算是换行,算是4个字符而已。
6. 怎么实现PHP的fgets();筛选输出,符合条件输出
下面的代码演示如何输出带有[world]的内容:
<?php
$fp=fopen('abc.log,'r');
while($s=fgets($fp)){
if (strpos($s,'[world]')!==false) echo $s;
}
fclose($fp);
?>
7. PHP中fgets()与fgetss()有什么区别 下图是分别使用fgets和fgetss读取的
fgetss
与 fgets() 相同,不同的是 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。
8. 如何运用PHP函数fgets读取指针文件
PHP函数fgets就是其中一个功能强大的函数。 PHP函数fgets -- 从文件指针中读取一行说明 string fgets ( int handle [, int length] ) 从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。 出错时返回 FALSE。 PHP函数fgets通常的缺陷: 文件指针必须是有效的,并且必须指向一个由 fopen() 或 fsockopen() 成功打开的文件。 以下是一个PHP函数fgets简单例子: 例子 1. 逐行读取文件<?php$handle=fopen(/tmp/inputfile.txt,r); while(!feof($handle)){$buffer=fgets($fd,4096); 注: length 参数从 PHP 4.2.0 起成为可选项,如果忽略,则行的长度被假定为 1024。从 PHP 4.3 开始源码天空 ,忽略掉 length 将继续从流中读取数据直到行结束。如果文件中的大多数行都大于 8KB,则在脚本中指定最大行的长度在利用资源上更为有效。 注: 从 PHP 4.3 开始本函数可以安全用于二进制文件。早期的版本则不行。
9. php 用fgets 能不能读取随机的一行
fgets()是从开头到最后按顺序 逐行读取的。。
你想随机读取,不如rand()下,取个随机数,再按下标读取文件的第几行。。
10. 关于PHP fgets和explode
经我测试确实有错!
我把下面的函数改了一下你看看,你写的有一点错误!当函数中遇到return时.此函数就跳出不再执行了!相当于你写了个exit;所以你如果文本中有两个以上的用户名,第二个用户名永远检测不到.
改过后测试可用
function checkPasswd($passwd,$user){
$flag=false;
if(!$fh = fopen("passwd.txt", "r")) return false;
while(!feof($fh)){
$line = trim(fgets($fh));
//your code goes below this line
$x = explode(":",$line);
if($user == $x[0] && $passwd == $x[1])
{
$flag=true;
break;
}
else
{
$flag=false;
}
}
fclose($fh);
return $flag;
}