代码之家  ›  专栏  ›  技术社区  ›  Young

str\u split需要哪个PHP版本?

  •  0
  • Young  · 技术社区  · 16 年前

    我在dreamhost中重新登录到我的服务器并测试了一些脚本 str_split

    测试代码:

    <?php
    $arr = str_split("lsdjflsdjflsdjflsdjfl");
    print_r($arr);
    ?>
    

    Fatal error: Call to undefined function:  str_split() in /test.php on line 3
    

    编辑@Justin Johnson

    我查了服务器的系统目录,发现Dreamhost里面有两个版本的PHP,在用户的webroot里面,文件会被PHP5解析,所以我在webroot里面放了一个phpinfo.PHP,得到了PHP5.2.12,如果PHP文件是直接用PHP test.PHP在命令行里面运行的话,另一个php版本是4.x,这就是我出错的原因

    /usr/local/php5/bin/php test.php
    

    一切都很好。

    7 回复  |  直到 16 年前
        1
  •  2
  •   rjmunro    12 年前

    str_split ,通常更容易直接遍历字符串的字符:

    $s="abc";
    $i=0;
    while(isset($s[$i])) {
        echo $s[$i++]." ";
    }
    

        2
  •  2
  •   Community Mohan Dere    9 年前

    首先:PHP文档总是直接在函数名下面的文档页面上指出每个函数需要什么版本。

    str_split

    echo "version:", phpversion(), 
        "<br/>\nstr_split exists? ", 
        function_exists("str_split") ? "true" : "false";
    

    然而,正如 Col. Shrapnel STRU分割 不必要和浪费(除非您需要将字符串分割成固定长度的块,例如: str_split($s, 3) )

    foreach ( str_split($s) as $c ) { 
        // do something with character $c
    }
    

    $s = "lsdjflsdjflsdjflsdjfl";
    
    for ( $i=0; isset($s[$i]); ++$i ) {
        // do something with character $s[$i]." ";
    }
    

    如果不是更清楚的话,也同样如此。

        3
  •  2
  •   YOU    16 年前

    根据DreamHostWiki,如果您在2008年9月之前创建了域,您需要从控制面板手动切换到php5。

    http://wiki.dreamhost.com/Installing_PHP5#Using_DreamHost.27s_PHP_5

    DreamHost截至2005年6月。截至 从PHP5切换回PHP4

    如果您还没有切换到PHP5, 您可以在控制面板中执行此操作。 但是,再一次,你将不能 切换后切换回PHP4 到PHP 5。

    5:

    1. 单击“域”,然后单击“管理域”。
    2. 单击要激活PHP5的域旁边的扳手图标 在上(在“Web宿主”列下)。
    3. 从下拉菜单中选择PHP5.x.x。
    4. 部分。
    5. 对每个要添加的域重复步骤3-5

    您还可以使用

    <?php  
       phpinfo();
    ?>
    
        4
  •  1
  •   Chathuranga Chandrasekara    16 年前

    所需版本为PHP5或更高版本。所以从理论上说你的计划应该有效。

        5
  •  1
  •   mattbasta    16 年前

    如果你找不到 str_split

    $stuff = "abcdefghijkl";
    echo $stuff[3];
    

    将产生

    d
    

        6
  •  0
  •   Kevin    16 年前

    可能是你代码里的任何东西。我们怎么知道它不是10行脚本或2000行脚本?

        7
  •  0
  •   rjmunro    12 年前

    $a = preg_split("//","abcdefg");
    echo json_encode($a);
    

    印刷品:

    ["","a","b","c","d","e","f","g",""]