0

我已经关注了一段代码

$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)

再次编辑:{{ used_theme }}已解决,我为更改为当前使用的主题 的模板系统做了一些 str_replace 。使用的主题是 'ubuntu',它有 6 个字符长度,而 {{ used_theme }} 有 10 个字符长度。str_replace 在代码执行后执行。这也改变了 var_dump 结果,从而产生了这种意想不到的行为。感谢大家的帮助。

4

3 回答 3

0

你的 $path 有一些不同,因为它显示 string(82) 字符,而 $x 有 string(72) 你必须是一些 html 字符问题。尝试修剪它,然后进行比较。

于 2013-04-18T07:25:59.163 回答
0

如您所见,两者之间存在一些差异stringslength "82"并且other is of "72" 字符串中可能存在一些不可见(非打印)字符

于 2013-04-18T07:27:45.260 回答
0

字符编码问题可能,如果您启用了 mbstring 扩展,请尝试此操作并相应地转换编码

echo mb_detect_encoding($x);
echo mb_detect_encoding($path);
于 2013-04-18T07:40:07.127 回答