PHP中的爆发函数
我有以下记事本文件;PHP中的爆发函数
dbName:
tableName:
numberOfFields:
我试图写一个PHP应用程序,它DBNAME到$ DBNAME,表名至$表名的价值和numberOfFields赋给$ numFields。
我的代码是:
$handle = @fopen("config.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
list($dbName, $tableName, $numFields) = explode(":", "$buffer");
}
fclose($handle);
}
然而,“:”因为有行数据库名和表名之间打破了不起作用。如何分解$ buffer,在记事本文件中保留换行符?
谢谢。
看一看的file
功能。它负责打开和读取文件,并从文件返回一行数组。然后您可以遍历数组并在每一行上单独运行。
伟大的工程!我如何选择,可以说,第3行?谢谢 – user254688 2010-01-21 01:33:03
$ lines = file('/ path/to/file.txt'); $ line3 = $ lines [2]; – echo 2010-01-21 02:00:54
可能会提到在那个结尾会有\ n或\ r或\ r \ n(换行符)。所以如果它像用户/密码(不是标记)那样重要,你会想'做'rtrim($ lines [2])。 – 2010-01-21 02:52:22
您可以使用chr($ INT);函数在爆炸调用中寻找换行符。
你可以找到更多的CHR功能位置:
http://php.net/manual/en/function.chr.php
添加你可以找到换行符的ASCII字符:
fgets
只返回一行。 $buffer
没有办法同时拥有所有三项,因此分配到list()
是错误的。对于第一行,explode()
将返回包含两项的数组:"dbName"
(冒号前的文本)和""
(冒号后的文本)。
这是否工作:
list ($dbName, $tableName, $numFields) = explode (':', implode ('', file ('config.txt')));
不,它返回 “dbName tableName numberOfFields”当我echo $ dbName – user254688 2010-01-21 02:42:03
你可以这样做:如果你确定的行内容
$data=file_get_contents("file");
$s = preg_split("/\n\n+/m", $data);
print_r($s);
,该文件将不会增长任意大:
1 <?php
2
3 $handle = @fopen("config.txt", "r");
4 if ($handle) {
5 $buffer = "";
6 while (!feof($handle)) {
7 $buffer = $buffer . trim(fgets($handle, 4096));
8 }
9 fclose($handle);
10
11 list($dbName, $tableName, $numFields) = explode(":", $buffer);
12 }
13
14 ?>
while循环将遍历所有行并在删除空白后连接到同一个缓冲区。这只留下由“:”分隔的内容。这现在可以爆炸了。
正如Nicolas写道的,feof一次只能获取一行,因此列表分配需要在循环之外进行。
我会建议几件事情 - 不使用'@'来压制警告或错误,并且使用file_get_contents或file()而不是fopen。 – JAL 2010-01-21 01:24:59
注意,谢谢=) – user254688 2010-01-21 03:00:07