web-dev-qa-db-ja.com

「空の区切り文字」PHP explode()関数を使用する場合の警告

Javascriptでは、var myStringToArray = myString.split('');は完全に受け入れられます。

しかし、PHPでは、$My_String_To_Array = explode('', $My_String);はエラーをスローします。

警告:explode()空の区切り文字

PHPマニュアル( http://php.net/manual/en/function.explode.php )は次のように説明しています。

区切り文字が空の文字列( "")の場合、explode()は[〜#〜] false [〜#〜]を返します。

では、現代のPHP explode('', $My_String)の代わりに使用するshould

これまでのところ、私が見ることができる選択肢は次のとおりです。

  • split("", $My_String)-PHP 5.3.0で非推奨
  • str_split($My_String)
  • preg_split('//', $My_String)

7年前は、str_split()が正しい代替手段でした。

しかし、str_split()はまだ現代的に使用されていますか、それともpreg_split()だけを見るべきですか?

それとも他の何かを見るべきですか?

7
Rounin

マルチバイトUTF-8文字列を扱う場合は、次のものを使用する必要があります。

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

それ以外の場合は、次を使用できます。

$array = str_split($My_String);

理由は マニュアル に記載されています:

str_split()は、マルチバイトでエンコードされた文字列を処理するときに、文字ではなくバイトに分割されます。

17
apokryfos

Str_splitはあなたが求めているものだと思います

str_split —文字列を配列に変換します

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

を生成します

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

最初のパラメーターは必須です。

explode(separator,string,limit)

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

ボイド[セパレータ]を使用した分解関数は無意味です。

以上です。O(∩_∩)O〜

1
lifanko lee