LoginSignup
0
1

More than 5 years have passed since last update.

PHPで文字列を分割する

Last updated at Posted at 2018-10-24

シングルバイト

等分

chunk_split

var_dump(chunk_split("ab\nadefqp", 2, '/'));
string(14) "ab/
a/de/fq/p/"

str_split

var_dump(str_split("ab\nadefqp", 2));
array(5) {
  [0]=>
  string(2) "ab"
  [1]=>
  string(2) "
a"
  [2]=>
  string(2) "de"
  [3]=>
  string(2) "fq"
  [4]=>
  string(1) "p"
}

マルチバイト

等分

preg_match_all('/[\s\S]{1,2}/u', "ああ\n😂defqp", $matches);
var_dump($matches[0]);

preg_match_all('/[\s\S]{1,5}/u', "ああ\n😂defqp", $matches);
var_dump($matches[0]);

preg_match_all('/[\s\S]{1,6}/u', "ああ\n😂defqp", $matches);
var_dump($matches[0]);
array(5) {
  [0]=>
  string(6) "ああ"
  [1]=>
  string(5) "
😂"
  [2]=>
  string(2) "de"
  [3]=>
  string(2) "fq"
  [4]=>
  string(1) "p"
}
array(2) {
  [0]=>
  string(12) "ああ
😂d"
  [1]=>
  string(4) "efqp"
}
array(2) {
  [0]=>
  string(13) "ああ
😂de"
  [1]=>
  string(3) "fqp"
}

指定数で分割

20180102 ⇒ 2018/01/02

$string = '20180102';

// mb_substr
$list = [
    mb_substr($string, 0, 4),
    mb_substr($string, 4, 2),
    mb_substr($string, 6, 2),
];

var_dump(implode('/', $list));


// regular expression
preg_match('/([0-9]{4})([0-9]{2})([0-9]{2})/u', $string, $matches);
array_shift($matches);

var_dump(implode('/', $matches));
string(10) "2018/01/02"
string(10) "2018/01/02"

特定文字で分割

2018/01/02 23:59:00 ⇒ 2018 01 02 23 59 00

mb_split

$string = '2018/01/02 23:59:00';

var_dump(mb_split('[/ :]', $string));
array(6) {
  [0]=>
  string(4) "2018"
  [1]=>
  string(2) "01"
  [2]=>
  string(2) "02"
  [3]=>
  string(2) "23"
  [4]=>
  string(2) "59"
  [5]=>
  string(2) "00"
}

preg_split

$string = '2018/01/02 23:59:00';

var_dump(preg_split('/[\/ :]/u', $string));
array(6) {
  [0]=>
  string(4) "2018"
  [1]=>
  string(2) "01"
  [2]=>
  string(2) "02"
  [3]=>
  string(2) "23"
  [4]=>
  string(2) "59"
  [5]=>
  string(2) "00"
}

explode

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1