<?php
namespace Lm\Util;
class Str
{
/**
* Convert underscore_strings to camelCase (medial capitals).
*
* @link https://stackoverflow.com/questions/2791998/convert-string-with-dashes-to-camelcase
* @param string $str
* @return string
*/
public static function snakeToCamel($str)
{
// Remove underscores, capitalize words, squash, lowercase first.
return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $str))));
}
/**
* Convert underscore_strings to camelCase (medial capitals).
*
* @link https://stackoverflow.com/questions/2791998/convert-string-with-dashes-to-camelcase
* @param string $str
* @return string
*/
public static function kebabToCamel($str)
{
// Remove underscores, capitalize words, squash, lowercase first.
return lcfirst(str_replace(' ', '', ucwords(str_replace('-', ' ', $str))));
}
/**
* カンマ区切り文字列(=csv)を文字列の配列に変換する
*
* @param string $str
* @param string $delimiter
* @return false|string[]
*/
public static function csvToArray($str, $delimiter = ',')
{
//
$result = explode($delimiter, $str);
// TODO: オプション化 - 空白文字のみの要素は省略
$result = array_filter($result, function ($col) {
return trim($col) !== '';
});
// TODO: オプション化 - 前後の空白文字はトリムする
$result = array_map(function ($col) {
return trim($col);
}, $result);
//
$result = array_values($result);
//
return $result;
}
/**
* @link https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
* @param $email
* @return false|int
*/
public static function isValidEmailAddress($email)
{
return preg_match('/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/', $email);
}
/**
* 機種依存文字を代替文字に変換する
* @link https://qiita.com/ymd_a/items/79125b2b9bb6c51ccd9c
* @param $str
* @return array|string|string[]
*/
public static function replaceMachineChar($str)
{
//
$search = [
'Ⅰ', 'Ⅱ', 'Ⅲ', 'Ⅳ', 'Ⅴ', 'Ⅵ', 'Ⅶ', 'Ⅷ', 'Ⅸ', 'Ⅹ',
'ⅰ', 'ⅱ', 'ⅲ', 'ⅳ', 'ⅴ', 'ⅵ', 'ⅶ', 'ⅷ', 'ⅸ', 'ⅹ',
'①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩',
'⑪', '⑫', '⑬', '⑭', '⑮', '⑯', '⑰', '⑱', '⑲', '⑳',
'№', '㈲', '㈱', '㈹',
'㊤', '㊦', '㊥', '㊧', '㊨',
'髙', '﨑', '彅', '塚', '增', '寬', '敎', '晴', '朗', '﨔', '橫', '德', '瀨',
'淸', '瀨', '凞', '猪', '益', '礼', '神', '祥', '福', '靖', '精', '濵', '琦', '昻',
'緖', '羽', '薰', '諸', '賴', '逸', '郞', '都', '鄕', '閒', '隆', '靑', '飯', '飼', '館',
'鶴', '黑',
'㍉', '㌔', '㌢', '㍍', '㌘', '㌧', '㌃', '㌶', '㍑',
'㍗', '㌍', '㌦', '㌣', '㌫', '㍊', '㌻',
'㎜', '㎝', '㎞', '㎏', '㏄', '㎡',
'㍻', '〝', '〟', '℡', '㍾', '㍽', '㍼', '㏍'
];
//
$replace = [
'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X',
'i', 'ii', 'iii', 'vi', 'v', 'vi', 'vii', 'viii', 'ix', 'x',
'(1)', '(2)', '(3)', '(4)', '(5)', '(6)', '(7)', '(8)', '(9)', '(10)',
'(11)', '(12)', '(13)', '(14)', '(15)', '(16)', '(17)', '(18)', '(19)', '(20)',
'No.', '(有)', '(株)', '(代)',
'(上)', '(下)', '(中)', '(左)', '(右)',
'高', '崎', 'なぎ', '塚', '増', '寛', '教', '晴', '朗', '欅', '横', '徳', '瀬',
'清', '瀬', '煕', '猪', '益', '礼', '神', '祥', '福', '靖', '精', '濱', '埼', '昂',
'緒', '羽', '薫', '諸', '頼', '逸', '郎', '都', '郷', '間', '隆', '青', '飯', '飼', '館',
'鶴', '黒',
'ミリ', 'キロ', 'センチ', 'メートル', 'グラム', 'トン', 'アール', 'ヘクタール', 'リットル',
'ワット', 'カロリー', 'ドル', 'セント', 'パーセント', 'ミリバール', 'ページ',
'mm', 'cm', 'km', 'kg', 'cc', '平方メートル',
'平成', '"', '"', 'TEL', '明治', '大正', '昭和', 'K.K.'
];
//
return str_replace($search, $replace, $str);
}
}