【问题标题】:PHP exploding string, strange resultPHP爆炸字符串,奇怪的结果
【发布时间】:2013-12-04 12:16:49
【问题描述】:

我正在为我的 kickstarter 项目制作一个小型自动加载器,但我遇到了一个让我有点困惑的问题。

我创建了一个加载器类,它接受一个参数,该参数必须包含下划线才能知道加载器必须在哪里处理该类。 该字符串包含路径信息和类名,例如:'path_to_my_class_myclassname' 在加载器类中,我通过“_”(下划线)分隔符将此字符串拆分为一个,并且它总是以某种方式返回一些意外的数组项,例如:

如果字符串为'first',则数组将如下所示:

array (size=1)
  0 => string 'first' (length=5)
array (size=1)
  0 => string 'f' (length=1)

如果我使用下划线,那么字符串是:'youtube_ClassYouTubeAPI' 它看起来像这样:

array (size=2)
  0 => string 'youtube' (length=7)
  1 => string 'ClassYouTubeAPI' (length=15)
array (size=1)
  0 => string 'y' (length=1)

您可以看到,在这两个示例中,结果数组都包含输入字符串的第一个字母,但不应该。

我也试过explode('_',$inputstring)preg_split('[_]',$inputstring),但结果是一样的。

如果有人可以帮助我,我将非常感激。提前致谢

===更新===========

这是整个代码:

<?php
class Autoloader {
    static public function loader($load_input) {

        $load_data = preg_split('[_]',$load_input,0);
        $classname = $load_input[count($load_input)-1];
        $filename = 'classes/'.implode('/',$load_data).'.php'; 
        var_dump($load_data);

        if (file_exists($filename)) {
            include($filename);
            if (class_exists($classname)) {
                return TRUE;
            }
        }
        return FALSE;
    }
}
spl_autoload_register('Autoloader::loader');
?>

【问题讨论】:

  • 你能给我们你的完整的php代码吗?
  • 您发布的代码works correctly。您的代码中的其他地方一定有问题。请发布完整(呃)列表,我们会尽力提供帮助
  • “结果数组包含输入字符串的第一个字母”,我怀疑你正在查看 str[0] 而不是 arr[0] 如果你得到它..

标签: php arrays string split explode


【解决方案1】:

拆分工作正常。问题是这一行:

$classname = $load_input[count($load_input)-1];

应该是:

$classname = $load_data[count($load_data)-1];

即你需要使用$load_data 而不是$load_input

否则,您会从 输入字符串(即“y”)中请求 [0],而不是从 您的爆炸数组 中请求 [0],后者是youtube

【讨论】:

    猜你喜欢
    • 2016-10-26
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多