我想了解一些代码。
define('HTTP_OPENCART', 'http://' . $_SERVER['HTTP_HOST'] . rtrim(rtrim(dirname($_SERVER['SCRIPT_NAME']), 'install'), '/.\\'). '/');
我无法理解的是:
A)rtrim:根据PHP手册,rtrim函数应该只接收两个参数。我认为第一个是dirname($_SERVER['SCRIPT_NAME']
哪个是第二个?这/.\\
??
是否有可能在第二个参数中考虑到手册中说With .. you can specify a range of characters
请注意它说两个句号(不是一个,因为它在代码中)。
那么代码的最后一部分呢? '/'
B)dirname:根据PHP手册,这个函数应该只接收一个参数(在我看来),在这种情况下,($ _SERVER ['SCRIPT_NAME'])。 ,'install'
在那边是什么意思?
我真的很困惑。
答案 0 :(得分:0)
你有两个嵌套的rtrims - 嵌套rtrim的结果是外部rtrim的第一个参数。最终字符串由'http://',$ _SERVER ['HTTP_HOST'],两个嵌套的rtrims和'/'
组成答案 1 :(得分:0)
rtrim
是嵌套的。他们正在履行双重职能。
此函数的第一部分:rtrim(dirname($_SERVER['SCRIPT_NAME']), 'install')
正在从该特定脚本所在的文件夹名称的右侧剥离“install”一词。 IE浏览器。如果opencart.php
位于名为“opencart-install”的文件夹中,则此文件夹名称将缩减为“opencart - ”。
函数的第二部分:rtrim("opencart-", '/.\\')
正在使用正则表达式(正则表达式)来尝试从目标字符串“opencart - ”中删除任何“。\”字符。
所以,一旦你弄明白你的名字是什么,你应该能够从那里开始学习逻辑。
答案 2 :(得分:0)
这不是好代码。让我们格式化它们。
define(
'HTTP_OPENCART',
'http://' . $_SERVER['HTTP_HOST'] . // 5. result of concatination would be http://domain.some.com/dir/
rtrim( // 4. removes /, ., \ characters from right and return /dir
rtrim( // 3. removes i,n,s,t,a,l characters from right and return /dir/
dirname( // 2. should return /dir/install
$_SERVER['SCRIPT_NAME'] // 1. returns something like /dir/install/index.php
),
'install'
),
'/.\\') .
'/');