2017-04-11 103 views
1

在JavaScript中,var myStringToArray = myString.split('');是完全可以接受的。「空分隔符」使用PHP explode()函數時的警告

但在PHP,$My_String_To_Array = explode('', $My_String);拋出一個錯誤:

Warning: explode() Empty delimiter

PHP手冊(http://php.net/manual/en/function.explode.php)解釋說:

If delimiter is an empty string (""), explode() will return FALSE.

那麼應該我是用當代PHP,而不是explode('', $My_String)

到目前爲止,我所看到的替代品:

  • split("", $My_String)- 棄用PHP 5.3.0的
  • str_split($My_String)
  • preg_split('//', $My_String)

七年前,str_split()將是更正等替代使用。

但是str_split()仍然在當代使用或我應該只看preg_split()

或者我應該在看別的東西嗎?

+0

你想在空間上爆炸嗎?如果是這樣,請留出空間?爆炸('',$ string)'。如果要將字符串拆分爲單個字符,可以通過執行'$ string [0] ... $ string [6]'來訪問它,依此類推。 – junkfoodjunkie

+0

[PHP:將字符串拆分爲數組,如爆炸時沒有分隔符](http:// stackoverflow。com/questions/2170320/php-split-string-into-array-like-explode-with-no-delimiter) – stealthjong

+1

'str_split'手冊頁沒有警告或其他提示,所以可以使用。 –

回答

5

如果處理的多字節UTF-8字符串,你應該使用:

$array = preg_split('//u', $My_String,-1, PREG_SPLIT_NO_EMPTY); 

否則你可以用:

$array = str_split($My_String); 

的原因是the manual注意:

str_split() will split into bytes, rather than characters when dealing with a multi-byte encoded string.

+0

消息靈通而全面的答案 - 謝謝。 – Rounin

3

我覺得str_split是你所追求的

str_split — Convert a string to an array

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

會產生

Array 
(
    [0] => H 
    [1] => e 
    [2] => l 
    [3] => l 
    [4] => o 
} 
+0

謝謝@MattJenkins。你能否確認'str_split()'仍然在當前使用中? 2017年4月仍被認爲是最佳做法嗎? – Rounin

+1

不知道這是否被認爲是最佳實踐,但是,我相信它完全符合您的設計要求。此外,這是一種有效且保持不變的方法,不存在折舊警告。 –

1

第一個參數是需要

explode(separator,string,limit) 

[separator]: required; 
[string]: required; 
[limit]: alternative. 

具有void [separator]的爆炸函數沒有意義。

這是all.o中(∩_∩)O〜