文字列の分割
explode、preg_split、preg_matchで文字列を分割
PHP
// ハイフンで分割
$str = explode('-', '03-1234-5678');
// $str[0] = '03'
// $str[1] = '1234'
// $str[2] = '5678'
// スペースで分割
$str = preg_split('/\s+/', 'foo bar baz');
$str = preg_split('/\s+/', 'foo bar baz');
// $str[0] = 'foo'
// $str[1] = 'bar'
// $str[2] = 'baz'
// 全角スペースを含む分割
$str = preg_split('/[\s ]+/', 'foo bar baz');
// 日付分割
$str = preg_split('/[\-\/\s:]+/', 2024/11/21 18:31:40);
$str = preg_split('/[\-\/\s:]+/', 2024-11-21 18:31:40);
// $str[0] = '2024'
// $str[1] = '11'
// $str[2] = '21'
// $str[3] = '18'
// $str[4] = '31'
// $str[5] = '40'
// 1文字ずつ分割(シングルバイトのみ)
$str = preg_split('//', 'foo', -1, PREG_SPLIT_NO_EMPTY);
// $str[0] = 'f'
// $str[1] = 'o'
// $str[2] = 'o'
// 1文字ずつ分割(マルチバイト)
$str = preg_split('//u', 'リンゴ', -1, PREG_SPLIT_NO_EMPTY);
// $str[0] = 'リ'
// $str[1] = 'ン'
// $str[2] = 'ゴ'
// 3文字ずつ分割(シングルバイトのみ)
$str = str_split('foobarbaz', '3');
// $str[0] = 'foo'
// $str[1] = 'bar'
// $str[2] = 'baz'
// 3文字ずつ分割(マルチバイト)
$split_count = mb_strlen('リンゴバナナ', 'UTF-8') / 3;
for ($i = 0; $i < $split_count; $i++) {
$str[] = mb_substr('リンゴバナナ', $i * 3, 3);
}
// $str[0] = 'リンゴ'
// $str[1] = 'バナナ'
// 改行で分割
$subject = 'foo
bar
baz';
$str = preg_split('(\r\n|\r|\n)', $subject);
// $str[0] = 'foo'
// $str[1] = 'bar'
// $str[2] = 'baz'
// 数字3桁と4桁に分割
preg_match('/(\d{3})(\d{4})/', '1234567', $str);
// $str[1] = '123'
// $str[2] = '4567'
// 最初の区切り文字で分割
$haystack = 'foo|bar|baz';
$pos = strpos($haystack, "|");
if ($pos !== FALSE) {
$str1 = substr($haystack, 0, $pos);
$str2 = substr($haystack, $pos + 1);
}
// $str1 = 'foo'
// $str2 = 'bar|baz'
// 最後の区切り文字で分割
$haystack = 'foo|bar|baz';
$pos = strrpos($haystack, "|");
if ($pos !== FALSE) {
$str1 = substr($haystack, 0, $pos);
$str2 = substr($haystack, $pos + 1);
}
// $str1 = 'foo|bar'
// $str2 = 'baz'
// 配列を分割
$input_arr = array('リンゴ', 'バナナ', 'ネコ', 'イヌ');
$str = array_chunk($input_arr, 2);
// $str[0][0] = 'リンゴ'
// $str[1][1] = 'イヌ'