"toi ten ng" * @param string $text * @param int $max_length * @return string */ public static function limitLength(string $text, int $max_length = 100 ) : string { if(strlen($text) <= $max_length) { return $text; } return substr($text, 0, $max_length-1); } /** * @description limit max length but keep full words. limitLengthFullWords("toi ten nguyen", 10) => "toi ten" * @param string $text * @param int $max_length * @return string */ public static function limitLengthFullWords(string $text, int $max_length = 100 ) : string { if(strlen($text) <= $max_length) { return $text; } $char_at_max_length = $text[$max_length-1]; if($char_at_max_length == ' ') { return substr($text, 0, $max_length-1); } //else fall back to the last space $words = explode(" ", substr($text, 0, $max_length-1)); array_pop($words); return join(" ", $words); } /** * @param $input_list array * @param $type string * @return array */ public static function makeListOfInputSafe(array $input_list, $type){ if(!sizeof($input_list)) return []; $result = []; foreach ($input_list as $key => $str) { $result[$key] = self::makeInputSafe($str, $type); } return $result; } /** * @param $input string data to process * @param $type string, type of data to validate against, enum : int|double|email|id|string|date|plain * @return mixed */ public static function makeInputSafe($input, $type){ if(is_array($input)) { return $input; } if ( $type == DataType::ID ) { //is $input the database item_id ? return preg_replace('/[^a-z0-9_\-\.]/i', '', $input); } if ( $type == DataType::EMAIL ) { return filter_var($input, FILTER_VALIDATE_EMAIL) ? $input : ''; } if ( $type == DataType::INTEGER ) { // support negative number return (int) preg_replace('/[^0-9\-]/', '', $input); } if ( $type == DataType::DOUBLE ) { // support negative number $input = preg_replace('/[^0-9,\-]/', '', $input); //convert vietnamese style , to . for percentage $input = str_replace(",", ".", $input); return (double) $input; } if ( $type == DataType::DATE ) { // support pattern: // date = d-m-Y // datetime = d-m-Y H:i:a $pattern = "/([0-9]{2})-([0-9]{2})-([0-9]{2,4})(\s)?([0-9]{1,2}:[0-9]{1,2}(:[0-9]{1,2})?)?/i"; return preg_replace($pattern, '', $input); } if ( $type == DataType::PLAIN_TEXT || $type == DataType::STRING ) { return strip_tags($input); } if ( $type == DataType::NON_VIETNAMESE ) { return preg_replace('/[^a-z0-9_\s\-]/i', '', $input); } if ( $type == DataType::RICH_TEXT ) { return $input; } return null; } }