10

私は次のような文字列を持っています:

$message="AB 1234 Hello, how are you?

私はこのようになりたい:

$message[0] = AB
$message[1] = 1234
$message[2] = Hello, how are you?

最初の2つの単語の長さは異なる場合がありますが、間にスペースが入るため、substr関数を提案しないでください。他に何か提案はありますか?

4

4 に答える 4

34

explode()制限付きで使用します。例:

$message = explode(' ', $message, 3);

単語の区切り文字の周りにもっと柔軟性が必要な場合は、次のようなことを行うことができますpreg_split()

$message = preg_split('/[\s,]+/', $message, 3)

デモ-http://codepad.org/1gLJEFIa

于 2012-11-07T05:23:03.733 に答える
6

次の機能を使用できます。

// Example 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

output:
//piece1
//piece2

詳細情報: http: //php.net/manual/en/function.explode.php

于 2012-11-07T05:37:56.663 に答える
3

単語が単純に連続した空白で区切られた最初の2つのチャンクである場合は、次のことができます...

$words = preg_split("/\s+/", $str);

最初の2つが必要な場合は、preg_split()のlimit引数を使用できます(Philに感謝)。

于 2012-11-07T05:21:38.040 に答える
2

sscanfをチェックしてください。ただし、ユーザーが送信したコメントも必ず読んでください。許可されている形式の詳細については、http://www.cplusplus.com/reference/clibrary/cstdio/scanf/を参照してください。

<?php
$string = 'AB 1234 Hello, how are you?';
$array = sscanf($string, '%s %d %[^$]');
var_dump($array);
/*
    array(3) {
      [0]=>
      string(2) "AB"
      [1]=>
      int(1234)
      [2]=>
      string(19) "Hello, how are you?"
    }
*/
于 2012-11-07T05:40:01.833 に答える