2010-03-21 93 views
0

我在dreamhost中登錄我的服務器並測試一些腳本。我發現我無法使用str_split。給出未定義函數的消息。我檢查了服務器的版本,它的PHP版本是5.2.12.And我只是想知道哪個版本是必需的?謝謝。str_split需要哪個PHP版本?

Testcode:

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

消息:

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

編輯@Justin約翰遜

我檢查服務器的系統目錄中,我發現有在Dreamhost.In PHP的兩個版本用戶的webroot,文件將被PHP5解析,這就是爲什麼我通過將phpinfo.php放入webroot中來獲得php 5.2.12。並且如果php文件在命令行中直接使用php test.php,另一個php v這是我得到錯誤的原因。這就是我得到一個錯誤的原因。當我使用

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

一切都很好。

+2

http://php.net/manual/en/function.str-split.php 回答這個問題是在文檔的頂部。 – 2010-03-21 02:06:07

+0

當然,我已經看到了,但錯誤確實發生在服務器與PHP5.2.12 :( – Young 2010-03-21 02:11:25

回答

2

而不使用str_split,它通常更容易通過迭代直接字符串的字符:

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

看到了什麼?

+0

Got you!我的壞。只要原諒我的無知。 – Young 2010-03-21 07:16:35

+0

+1,但是您應該爲此答案添加更多解釋,以便它不依賴於單獨答案的評論帖子。 – 2010-03-21 07:16:47

1

需要的版本是PHP 5或更高版本。所以理論上你的程序應該工作。

0

可能是你的代碼中的任何東西。我們如何知道它不是10行腳本或2000行腳本?

1

如果你不能得到str_split工作,只使用一個字符串數組:

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

會產生

d 

這種方法是最快的,反正。我不知道它是否適合您的需求,但如果它確實如此,我希望它有幫助!

+0

是啊...但它不能用於foreach。 – Young 2010-03-21 05:35:43

+0

@SpawnCxy但你不需要foreach迭代字符串! – 2010-03-21 06:29:34

+0

@Col。Shrapnel我不是迭代一個字符串,我需要處理它中的每個字符。顯然我不能一個一個地手動完成,你知道的。 – Young 2010-03-21 06:44:40

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 4從PHP 5起 面板。

如果您還沒有切換到PHP 5,您可以在控制面板中執行此操作,即 。 但是,再次,您將無法在將 切換到PHP 5之後將 切換回PHP 4。

下面是如何切換從PHP 4到PHP 5:

  1. 登錄到DreamHost的控制面板。
  2. 點擊域名,然後點擊管理域名。
  3. 單擊要在其上激活PHP 5 的域旁邊的扳手圖標(在Web Hosting列下)。
  4. 從下拉菜單中選擇PHP 5.x.x。
  5. 點擊立即更改完全託管設置!在 部分的底部。
  6. 對您希望激活的每個附加域重複步驟3-5。

,你也可以用檢查你的php版本

<?php 
    phpinfo(); 
?> 
+0

感謝您的通知。 – Young 2010-03-21 07:44:23

2

第一關:PHP文檔總是會說需要什麼版本直屬函數名稱函數的文檔頁面中的所有功能。

.htaccess文件可能在您的路徑中的某處,並導致PHP的以前版本(< 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]." "; 
} 

即使不是更清楚的話,也是如此。

0

您可以使用preg_split()將數組拆分爲單個字符,但它會在開始和結束時返回一個額外的空字符串。

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

打印:

["","a","b","c","d","e","f","g",""] 
相關問題