用PHP开发健壮的代码:有效地使用变量
2008-02-15 18:32:16 来源:WEB开发网核心提示:您可以编写负责解析工作的函数,这样您可以在任何地方使用它而不用做任何修改,用PHP开发健壮的代码:有效地使用变量(4),让我们将该任务分为一些更简单的步骤:逐行地读取文件 丢弃一行中 # 号字符后的所有内容 以等号为界,将一行分为两个字符串,我倾向于使用 define() 函数进行定义,因为一旦设置了值就不能在运行时更
您可以编写负责解析工作的函数,这样您可以在任何地方使用它而不用做任何修改。让我们将该任务分为一些更简单的步骤:
逐行地读取文件
丢弃一行中 # 号字符后的所有内容
以等号为界,将一行分为两个字符串,并丢弃等号
除去字符串中的额外空格
相应声明变量
要编写最后一步,只有使用可变变量才行。清单 6 显示了代码:
清单 6. 解析函数
php
/* conf_parser.php */
/* Give the filename with path info whenever possible. */
function conf_parse($file_name) {
// @ in front makes the function quiet. Error messages are not printed.
$fp = @fopen($file_name, "r") or die("Cannot open $file_name");
while ($conf_line = @fgets($fp, 1024)) {
$line = ereg_replace("#.*$", "", $line); // Do stripping after hashes.
if ($line == "") continue; // Drop blank lines resulting from the previous step.
list($name, $value) = explode ('=', $line); // Drop '=' and split.
$name = trim($name); // Strip spaces.
$$name= trim($value); // Define the said variable.
}
fclose($fp) or die("Can't close file $file_name");
}
?>
用正则表达式除去 # 号。尽管这里的表达式很简单,但要知道复杂的正则表达式会消耗大量的 CPU 时间。此外,为每页反复地解析配置文件不是一个好的决策。更好的选择是:使用变量或定义语句将已解析的输出存储为 PHP 脚本。我倾向于使用 define() 函数进行定义,因为一旦设置了值就不能在运行时更改它。可以在参考资料中找到一个能够根据您的需要加以修改的实现。
更多精彩
赞助商链接