str_split需要哪个PHP版本?

时间:2010-03-21 02:01:16

标签: php function version dreamhost

我在dreamhost中重新登录我的服务器并测试一些脚本。我发现我无法使用str_split。给出了未定义函数的消息。我检查了服务器中的版本,其PHP版本是5.2.12。我只是想知道哪个版本是必需的?谢谢。

Testcode:

<?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获得php 5.2.12的原因。如果php文件直接在命令行中使用php test.php运行,另一个php版本是4.x工作。这就是我收到错误的原因。当我使用

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

一切都很好。

7 个答案:

答案 0 :(得分:2)

不是使用str_split,而是直接迭代字符串的字符通常要容易得多:

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

答案 1 :(得分:2)

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

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

  

PHP 5被添加到所有计划中   DreamHost截至2005年6月。截至   2008年9月,对PHP4的支持是   停止了,所以你不能再这样了   从PHP 5切换回PHP 4   小组。

     

如果你还没有切换到PHP 5,   您可以在控制面板中执行此操作。   但是,再一次,你将无法做到   切换后切换回PHP 4   到PHP 5.

     

以下是如何从PHP 4切换到PHP   5:

     
      
  1. 登录DreamHost控制面板。
  2.   
  3. 单击“域”,然后单击“管理域”。
  4.   
  5. 点击要激活PHP 5的域旁边的扳手图标   on(在“虚拟主机”栏目下)。
  6.   
  7. 从下拉菜单中选择PHP 5.x.x.
  8.   
  9. 点击立即更改完全托管的设置!在底部   部分。
  10.   
  11. 对您想要的每个其他域重复步骤3-5   激活。
  12.   

你也可以用

检查你的php版本
<?php  
   phpinfo();
?>

答案 2 :(得分:2)

首先:PHP文档将始终在函数名称下直接说明该函数文档页面上每个函数所需的版本。

.htaccess文件可能位于路径中的某个位置,并导致使用以前的PHP版本(&lt; 5)。要进行双重(或三重)检查以确保您使用正确的PHP版本,请将此代码放在您调用str_split

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

但是,如Col. Shrapnel所示,没有必要将字符串转换为单个字符数组,以便迭代该字符串的字符。字符串也可以使用传统的迭代方法进行迭代,从而使str_split的调用变得不必要和浪费(除非您需要将字符串分段为固定长度的块,例如: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 :(得分:1)

所需版本为PHP 5或更高版本。所以理论上你的程序应该可行。

答案 4 :(得分:1)

如果无法使str_split起作用,只需使用字符串作为数组:

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

将产生

d

无论如何,这种方法最快。我不知道它是否适合您的需求,但如果确实如此,我希望它有所帮助!

答案 5 :(得分:0)

可以是代码中的任何内容。我们怎么知道它不是10行脚本或2000行脚本?

答案 6 :(得分:0)

您可以使用preg_split()将数组拆分为单个字符,但它会在开头和结尾返回一个额外的空字符串。

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

打印:

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