1.介绍
fgetss是PHP中用来读取文件中的一行并过滤掉其中的HTML和PHP标记的函数。该函数是fgetcsv函数的改良版本。fgetcsv只能读取CSV格式的文件,而fgetss从文件中读取一行并过滤掉其中的HTML和PHP标记。
1.1 fgetss函数的语法
string fgetss ( resource $handle [, int $length [, string $allowed_tags ]] )
1.2 参数说明
handle: 必选参数,输入文件的句柄。
length: 可选参数,规定读取的字符数的长度,默认值为 1024。
allowed_tags: 可选参数,规定不希望从返回值中删除的 HTML 标签。
2.示例
下面是一个简单的fgetss函数的例子,读取文件中的一行并过滤掉其中的HTML和PHP标记:
$handle = fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (($buffer = fgetss($handle, 1024)) !== false) {
echo $buffer;
}
if (!feof($handle)) {
echo "读取文件错误";
}
fclose($handle);
}
2.1 代码解析
fopen()函数用于打开文件,"r"参数指该文件只能被读取。在while循环中,使用fgetss()函数读取文件行。由于我们并没有指定allowed_tags参数,因此所有HTML 和PHP 标记都将被删除。
3.用例
3.1 过滤HTML标签
htmlentities()函数可以将所有的HTML标签转换为实体字符,并防止潜在的安全漏洞。结合fgetss函数使用,可以很好的保证安全。下面是一个示例代码:
$filename = "input.txt";
$handle = fopen($filename, "r");
if ($handle) {
while (($buffer = fgetss($handle, 1024)) !== false) {
$buffer = htmlentities($buffer);
echo $buffer;
}
if (!feof($handle)) {
echo "读取文件错误";
}
fclose($handle);
}
在上面的示例中,读取的每一行都被传递到htmlentities()函数中,将HTML标记转换为实体字符。
3.2 过滤指定标签
如果在读取文件时,想要保留一些标记,可以使用allowed_tags参数来控制。下面是一个示例代码:
$filename = "input.txt";
$handle = fopen($filename, "r");
if($handle){
while (($buffer = fgetss($handle, 1024, '')) !== false) {
echo $buffer;
}
if (!feof($handle)) {
echo "读取文件错误";
}
fclose($handle);
}
在这个示例中,读取的每一行都被传递到fgetss()函数中,以过滤掉所有的HTML和PHP标记,但保留
标记。
4.总结
fgetss()是一个有用的PHP函数,在读取文件时,可以过滤掉文本中的HTML和PHP标记,以避免潜在的安全漏洞。可以将其与htmlentities()函数一起使用,以确保文件的安全性。