以下php代码的含义?

时间:2011-06-07 15:43:07

标签: php

伙计我经常使用以下代码,但没有正确理解函数的确切语义。 特别是对于最后两个str_replace函数。任何人都能解释我这里发生了什么(稍微详细一点)?

$this_file = str_replace('\\', '/', __FILE__);
$doc_root = $_SERVER['DOCUMENT_ROOT'];
$web_root = str_replace(array($doc_root, 'application/config.php'), '', $doc_root);
$srv_root = str_replace('application/config.php', '', $doc_root);

1 个答案:

答案 0 :(得分:5)

  1. 用正斜杠\替换反斜杠/(之后不使用该变量)。
  2. 从服务器超全局获取文档根目录(通常是Apache配置DocumentRoot指令)。
  3. 将文档根目录或application/config.php的任何出现替换为文档根字符串,并将其存储在$web_root中(对我来说似乎是无用的代码)。
  4. 从文档根字符串中替换application/config.php的任何出现并将其存储在$srv_root中(再次,看起来像无用的代码,因为文档根目录应该是目录,而不是文件)。
  5. 结论:似乎这段代码可以翻译成以下内容,并且这些“计算”实际上都不是必需的:

    $doc_root = $_SERVER['DOCUMENT_ROOT'];
    $web_root = '';
    $srv_root = $doc_root;
    

    甚至更短:

    $doc_root = $srv_root = $_SERVER['DOCUMENT_ROOT'];
    $web_root = '';