在PHP程序员的职业生涯中,掌握文件操作与网络编程是不可或缺的技能。这些能力不仅在日常开发中频繁使用,也是面试和笔试中常被考察的重点。本章将通过一系列精心设计的实战案例,深入分析PHP文件操作与网络编程的核心知识点与常见应用场景,帮助读者巩固理论知识,提升实战能力。
fopen()
函数打开文件,该函数返回文件指针资源。文件操作完成后,应使用fclose()
函数关闭文件以释放系统资源。data.txt
的文本文件,并打印其内容。首先,使用fopen('data.txt', 'r')
打开文件;然后,通过循环读取文件内容直至文件末尾(EOF);最后,关闭文件。
$file = fopen('data.txt', 'r');
if ($file) {
while (($line = fgets($file)) !== false) {
echo $line;
}
fclose($file);
} else {
echo "文件打开失败!";
}
fwrite()
用于向文件写入数据,fread()
用于从文件读取数据。file_get_contents()
和file_put_contents()
提供了更简洁的读写整个文件的方式。log.txt
文件中。
$text = $_POST['user_input']; // 假设用户输入通过POST提交
$file = 'log.txt';
if (file_put_contents($file, $text . PHP_EOL, FILE_APPEND)) {
echo "写入成功!";
} else {
echo "写入失败!";
}
filesize()
, filemtime()
, file_exists()
等函数用于获取文件属性;opendir()
, readdir()
, closedir()
等函数用于目录操作。
$dir = 'uploads/';
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$filePath = $dir . $file;
if (is_file($filePath)) {
echo $file . ' - 最后修改时间: ' . date('Y-m-d H:i:s', filemtime($filePath)) . "<br>";
}
}
}
closedir($handle);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
socket
扩展支持Socket编程。
$host = '127.0.0.1';
$port = 12345;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $port);
socket_listen($socket);
$client = socket_accept($socket);
$input = socket_read($client, 1024);
echo "Received: $input";
$output = "Hello, Client!";
socket_write($client, $output, strlen($output));
socket_close($client);
socket_close($socket);
场景描述:开发一个文件上传功能,要求限制文件类型、大小,并检查文件是否已存在。
实现步骤:
enctype="multipart/form-data"
。$_FILES
全局数组。$_FILES['file']['size']
)。pathinfo()
获取扩展名,或使用getimagesize()
验证图片类型)。file_exists()
)。move_uploaded_file()
将文件移动到目标目录。场景描述:编写一个简单的网络爬虫,抓取指定网页的标题并保存。
实现步骤:
DOMDocument
或正则表达式解析HTML,提取<title>
标签的内容。
// 省略cURL部分,直接假设$html为网页内容
$dom = new DOMDocument();
@$dom->loadHTML($html);
$title = $dom->getElementsByTagName('title')->item(0)->nodeValue;
file_put_contents('titles.txt', $title . PHP_EOL, FILE_APPEND);
问题:请解释PHP中文件打开模式的区别(如’r’, ‘r+’, ‘w’, ‘w+’, ‘a’, ‘a+’)。
问题:在PHP中,如何使用cURL发送POST请求?
CURLOPT_POST
为true
,CURLOPT_POSTFIELDS
为要发送的数据(数组或字符串),然后使用curl_exec()
执行请求。问题:描述一下PHP中Socket编程的基本流程。
通过本章的学习,读者不仅应掌握PHP文件操作与网络编程的基本理论和常用函数,还应能够灵活应用这些知识解决实际开发中遇到的问题。实战案例的分析与面试笔试常见问题的解答,将进一步提升读者的实战能力和应试技巧。希望本章内容能为广大PHP程序员的面试笔试之路提供有力支持。