我已经遵循了一段代码
$path = $resource['path'];
if (strpos($path, base_url()) == 0) {
$path = FCPATH. substr($path, strlen(base_url()));
}
echo '<pre>';
$x = '/home/gofrendi/public_html/No-CMS/themes/ubuntu/assets/default/script.js';
var_dump($path);
var_dump($x==$path);
var_dump('/home/gofrendi/public_html/No-CMS/themes/ubuntu/assets/default/script.js' == $path);
echo '</pre>';
我确定$ path包含/home/gofrendi/public_html/No-CMS/themes/ubuntu/assets/default/script.js
这就是我得到的:
string(82) "/home/gofrendi/public_html/No-CMS/themes/ubuntu/assets/default/script.js"
bool(false)
bool(false)
似乎比较完全失败了。这有什么不对? PHP错误或我的错误?
修改 我也很高兴地向您展示此代码的结果:
echo '<pre>';
$x = '/home/gofrendi/public_html/No-CMS/themes/ubuntu/assets/default/script.js';
var_dump($path);
var_dump($x);
var_dump($x==$x);
var_dump($x==$path);
var_dump('/home/gofrendi/public_html/No-CMS/themes/ubuntu/assets/default/script.js' == $path);
echo '</pre>';
结果是:
string(82) "/home/gofrendi/public_html/No-CMS/themes/ubuntu/assets/default/script.js"
string(72) "/home/gofrendi/public_html/No-CMS/themes/ubuntu/assets/default/script.js"
bool(true)
bool(false)
bool(false)
再次编辑:
已解决,我为模板系统做了一些str_replace,将{{ used_theme }}
更改为当前使用的主题。使用的主题是'ubuntu',其长度为6个字符,而{{used_theme}}的长度为10个字符。
执行代码后执行str_replace。这也会更改var_dump结果,从而产生这种意外行为。
谢谢大家的帮助。
答案 0 :(得分:0)
你的$ path有一些不同,因为它显示字符串(82)字符而$ x有字符串(72)你必须是一些html字符isssue。尝试修剪然后比较。
答案 1 :(得分:0)
正如您所看到的,两个strings
之间存在一些差异,其中一个length "82"
和other is of "72"
字符串中可能存在一些不可见(非打印)字符
答案 2 :(得分:0)
字符编码问题可能,如果你启用了mbstring扩展,试试这个并相应地转换编码
echo mb_detect_encoding($x);
echo mb_detect_encoding($path);