文字列の分割

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:]+/', 2017/07/29 01:48:12); $str = preg_split('/[\-\/\s:]+/', 2017-07-29 01:48:12); // $str[0] = '2017' // $str[1] = '07' // $str[2] = '29' // $str[3] = '01' // $str[4] = '48' // $str[5] = '12' // 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] = 'イヌ'

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。
主にLAPP環境でPHPを書いています。
最近はjQueryをよく書いています。