/support

Collection of agnostic PHP Functions and helpers with zero dependencies to use as foundation in packages and other project

Primary LanguagePHPMIT LicenseMIT

Collection of agnostic PHP Functions and helpers

Latest Version on Packagist Software License Build Status Quality Score Total Downloads

This package provides a lot of very usefull agnostic helpers to use as foundation in packages and other project.

NOTE: Some of these helpers was written by padosoft, another was founded on the opensource web and some of these is refactored and/or adjusted for our purpose or for improvements.

##Overview

All helpers function are splitted into these files:

  • Array
  • Constants (generic usefull constants)
  • DateTime
  • Helpers (misc functions)
  • IP
  • Reflection
  • Sanitize
  • String
  • Validation
  • Xml

##Requires

  • php: >=7.0.0|^8.0|^8.1
  • nesbot/carbon (only for some datetime functions)

Installation

You can install the package via composer:

$ composer require padosoft/support

Usage

Create new php file, add composer autoload and start using functions.

<?php

require "vendor/autoload.php";

var_dump(str_random(16));

List of functions

Array

  • head
  • last
  • insert_at_top
  • array_has
  • array_get
  • array_set
  • CleanUpArrayOfInt
  • array_split_filter
  • in_array_column
  • objectToArray
  • arrayToObject
  • arrayToString
  • array_key_exists_safe
  • array_get_key_value_safe
  • isNullOrEmptyArray
  • isNotNullOrEmptyArray
  • isNullOrEmptyArrayKey
  • isNotNullOrEmptyArrayKey
  • array_remove_columns() : Remove given column from the subarrays of a two dimensional array.
  • array_remove_first_columns() : Remove first column from the subarrays of a two dimensional array.
  • array_remove_last_columns() : Remove last column from the subarrays of a two dimensional array.

DateTime

  • carbonFromIsoDateTime
  • carbonFromIsoDate
  • carbonFromItaDateTime
  • carbonFromItaDate
  • carbon
  • roman_year
  • partialsDateIso
  • dateIsoToIta
  • dateItaToIso
  • monthFromNumber
  • dateIsoToItaSpec
  • getNameDayFromDateIso
  • getTimeFromDateTimeIso
  • diff_in_year
  • age
  • ampm
  • ampm2Number
  • fuzzySpan
  • unixTimestamp2dos
  • dos2unixTimestamp
  • cal_days_in_month
  • cal_days_in_current_month
  • days_in_month
  • days_in_current_month

Helpers (misc functions)

  • rgb2hex
  • hex2rgb
  • format_money
  • format_euro
  • ordinal
  • value
  • with
  • setErrorReportingForProduction
  • isExecutedByCLI
  • bytes2HumanSize
  • convertPHPSizeToBytes
  • getMaximumFileUploadSize
  • encryptString
  • getFaviconUrl
  • getFaviconImgTag
  • isHttps
  • getQRcode
  • getQRcodeUrl
  • gravatarUrl
  • gravatar
  • isNumberOdd
  • isNumberEven
  • getTinyUrl
  • expandShortUrl
  • curl
  • curl_internal_server_behind_load_balancer
  • debug
  • isAjax
  • isMobile
  • getBrowser
  • getReferer
  • getCurrentURL
  • getCurrentUrlPageName
  • getCurrentUrlQuerystring
  • getCurrentUrlDirName
  • getCurrentUrlDirAbsName
  • isZlibOutputCompressionActive
  • isZlibLoaded
  • isClientAcceptGzipEncoding
  • compressHtmlPage
  • get_http_response_code
  • url_exists
  • startLayoutCapture
  • endLayoutCapture
  • get_var_dump_output
  • logToFile
  • isImageExtension
  • getImageExtensions
  • template
  • randomChance
  • getExceptionTraceAsString
  • windows_os
  • getConsoleColorTagForStatusCode() : Get the color tag for the given status code to be use in symfony/laravel console.
  • get_os_architecture() : Get the OS architecture 32 or 64 bit.
  • is_32bit() : Check if the OS architecture is 32bit.
  • is_64bit() : Check if the OS architecture is 64bit.
  • isRequestFromCloudFlare(): check if request (by given $_SERVER) is a cloudflare request.
  • isCloudFlareIp(): check if given ip is a valid cloudflare ip.
  • gzCompressFile(): GZIPs a file on disk (appending .gz to the name) without read all source file in memory.
  • getFileMimeType(): get the mime type string of a file using more strategies or return FALSE if it fails.
  • getFileMimeTypeByFileInfo(): get File MimeType string using the newer PHP finfo functions.
  • getFileMimeTypeByOSFileCommand(): get File MimeType string using the OS' file command. AFAIK that's only available on *NIX systems.
  • getImageMimeTypeByExif_imagetype(): get image MimeType string of image using exif_imagetype.

IP

  • getIPVisitor
  • anonimizeIp
  • anonimizeIpv4() : masquerade last digit of IPv4 address.
  • anonimizeIpv4Compatibility() : masquerade last digit of IPv4 compatibility address.
  • anonimizeIpv6() : masquerade last digit of IPv6 address.
  • anonimizeIpWithInet() : masquerade last digit of IP address with inet php function.
  • getHost
  • getClientIps
  • getClientIp
  • checkIp
  • checkIp4
  • checkIp6
  • isFromTrustedProxy
  • expandIPv6Notation(): * Replace '::' with appropriate number of ':0'
  • decbin32(): to ensure that the binary strings are padded with zeros out to 32 characters.
  • ipInRange(): Function to determine if an IP is located in a specific range as specified via several alternative formats.

Reflection

  • short_class_name
  • class_constants
  • class_uses_recursive
  • class_basename
  • getClassNameFromFile
  • getNamespaceFromFile
  • getPhpDefinitionsFromFile

Sanitize

  • strip_nl
  • jse : Escape javascript argument.
  • e : Escape html argument.
  • csse : Escape css argument.
  • attre : Escape html attribute argument.
  • she() : Escape shell argument.
  • normalizeUtf8String : Normalize the string. Removes all diacritics (marks like accents) from a given UTF8-encoded texts and returns ASCii-text.
  • normalizerUtf8Safe() : Normalize uft8 to various form with php normalizer function if exists, otherwise return original string.
  • sanitize_filename
  • sanitize_pathname
  • sanitize_arr_string_xss
  • sanitize_string_xss
  • sanitize_urlencode
  • sanitize_email
  • sanitize_numbers
  • sanitize_floats
  • sanitize_phone() : Sanitize the string by removing illegal characters from phone numbers.

String

  • generateRandomPassword
  • generateRandomString
  • preg_replace_sub
  • snake_case
  • str_random
  • ends_with
  • ends_with_insensitive
  • starts_with
  • starts_with_insensitive
  • str_contains
  • str_contains_insensitive
  • str_finish
  • str_finish_insensitive
  • str_is
  • str_limit
  • str_replace_array
  • studly_case
  • studly
  • camel_case
  • underscore2dash
  • dash2underscore
  • str_replace_multiple_space
  • str_replace_last
  • segment
  • firstSegment
  • lastSegment
  • isNullOrEmpty
  • isNotNullOrEmpty
  • numberToWord
  • secondsToText
  • minutesToText
  • hoursToText
  • str_html_compress
  • str_word_count_utf8
  • slugify() : Generate a URL friendly "slug" from a given string.
  • firstStringBetween(): Returns the first string there is between the strings from the parameter start and end.

Validation

  • isStringNumberStartsWithMoreThanOneZero
  • isIntegerPositive
  • isIntegerPositiveOrZero
  • isIntegerNegative() : Check if the value (int, float or string) is a integer and less than zero.
  • isIntegerNegativeOrZero() : Check if the value (int, float or string) is a integer and less than zero or equals to zero.
  • isIntegerZero() : Check if the value (int, float or string) is a integer and equals to zero.
  • isInteger
  • isIntegerFloatingPoint
  • isFloatingPoint
  • isDouble
  • isPercent
  • isIntBool() : Check if the value is a integer/string 0 or 1.
  • isDateIta
  • isDateIso
  • isDateTimeIso
  • isDateTimeIta
  • isTimeIso
  • isTimeIta
  • isDateZeroIso() : Check if string is 0000-00-00
  • isTimeZeroIso() : Check if string is 00:00:00
  • isDateTimeZeroIso() : Check if string is '0000-00-00 00:00:00'
  • isDateOrDateZeroIso() : Check if string is YYYY-mm-dd and valid date or 0000-00-00
  • isDateTimeOrDateTimeZeroIso() : Check if string is 'YYYY-mm-dd HH:ii:ss' and valid date or '0000-00-00 00:00:00'
  • isDateZeroIta() : Check if string is 00/00/0000
  • isTimeZeroIta() : Check if string is 00:00:00
  • isDateTimeZeroIta() : Check if string is '00/00/0000 00:00:00'
  • isDateOrDateZeroIta() : Check if string is dd/mm/YYYY and valid date or 00/00/0000
  • isDateTimeOrDateTimeZeroIta() : Check if string is 'dd/mm/YYYY HH:ii:ss' and valid date or '00/00/0000 00:00:00'
  • hasMinAge
  • hasMaxAge
  • hasAgeInRange
  • isInRange
  • isDay
  • isMonth
  • isJewishLeapYear
  • betweenDateIso
  • betweenDateIta
  • isMail
  • isIPv4
  • isIPv6
  • isIPv4Compatibility
  • isIP
  • isUrl
  • isHostname
  • urlW3c
  • isVATRegisteredInVies() : Validate a European VAT number using the EU commission VIES service to verify if VAT number is authorized to carry out intra-Community operations must use the service.
  • isITVat() : Check Italian Vat Number (Partita IVA).
  • isEuVatNumber() : Check if a valid EU vat given against specific EU country vat rules (at the moment only for italy) and optionally check the EU VIES service.
  • getCoutryCodeByVatNumberTest($val, $fallback): Try to extract EU country code in Vat number return $fallback if it fails.
  • isCf
  • isAlpha
  • isAlphaNumeric
  • isAlphaNumericDash
  • isAlphaNumericWhiteSpaces
  • isNumeric() : Determine if the provided value contains only numeric characters with or without(default) sign.
  • isNumericWithSign() : Determine if the provided value contains only numeric characters with sign.
  • isNumericWithoutSign() : Determine if the provided value contains only numeric characters without sign.
  • isBool
  • isBoolOrIntBool
  • isCrediCard
  • isValidHumanName
  • isIban
  • hasFileExtension
  • isphoneNumber
  • isJsonString
  • isUuid
  • isGeoCoordinate
  • isLatitude
  • isLongitude
  • isAscii
  • isUtf8

Xml

  • xmlUrl2array
  • xml2array
  • array2xml
  • array2SimpleXMLElement

Constants (generic usefull constants)

  • DS
  • NUMBERS_ITA_ARR
  • NUMBERS_EN_ARR
  • PERIOD_IN_SECONDS_ITA_ARR
  • PERIOD_SINGULAR_PLURAL_ITA_ARR
  • PERIOD_IN_SECONDS_EN_ARR
  • SECOND_IN_SECOND
  • MINUTE_IN_SECOND
  • HOUR_IN_SECOND
  • DAY_IN_SECOND
  • WEEK_IN_SECOND
  • MONTH_IN_SECOND
  • YEAR_IN_SECOND
  • DATE_TIME_FORMAT_ISO
  • DATE_TIME_FORMAT_ITA
  • DATE_FORMAT_ISO
  • DATE_FORMAT_ITA
  • TIME_FORMAT_ISO
  • TIME_FORMAT_ITA
  • SUNDAY
  • MONDAY
  • TUESDAY
  • WEDNESDAY
  • THURSDAY
  • FRIDAY
  • SATURDAY
  • DAYS_ITA_ARR
  • DAYS_ENG_ARR
  • GENNAIO
  • FEBBRAIO
  • MARZO
  • APRILE
  • MAGGIO
  • GIUGNO
  • LUGLIO
  • AGOSTO
  • SETTEMBRE
  • OTTOBRE
  • NOVEMBRE
  • DICEMBRE
  • MONTHS_ITA_ARR
  • MONTHS_ITA_ARR_1_BASED
  • MONTHS_SHORT_ITA_ARR
  • MONTHS_SHORT_ITA_ARR_1_BASED

Usage

You can call every functions directly. Example:

<?php

/*
 *  constans
 */
echo 'directory separator is: '.DS;

/*
 *  validation helpers
 */

//check iso date
if( !isDateIso("") )  echo 'invalid.';
if( !isDateIso("2016-08-18") )  echo 'invalid.';
if( !isDateIso("2016-18-08") )  echo 'invalid.';
if( !isDateIso("0000-00-00") )  echo 'invalid.';
if( !isDateIso("00-00-00") )  echo 'invalid.';
if( !isDateIso("16-08-18") )  echo 'invalid.';
if( !isDateIso("2016-02-38") )  echo 'invalid.';

//check italian Fiscal Code
if( !isCf("") )  throw new Exception();
if( !isCf("abcdefghijklmnoz") )  throw new Exception();
if( !isCf("xxxxxx12c34x567o") )  throw new Exception();

//check italian VAT (Partita iva)
if( !isPiva("") )  throw new Exception();
if( !isCf("00000000000") )  throw new Exception();
if( !isCf("02361141209") )  throw new Exception();
if( !isCf("00000000001") )  throw new Exception();

//check integer value
if( !isInteger(1561) )  throw new Exception();
if( !isInteger('sadasd') )  throw new Exception();

/*
 *  datetime helpers
 */

//sleep 2 minuti
sleep(2*MINUTE_IN_SECOND);
//sleep 2h
sleep(2*HOUR_IN_SECOND);
//sleep 2min and 30seconds
sleep(2*MINUTE_IN_SECOND+30);

//date format
echo date(DATE_FORMAT_ISO);//'Y-m-d' 
echo date(DATE_FORMAT_ITA);//'d-m-Y'
echo date(DATE_TIME_FORMAT_ISO);//'Y-m-d H:i:s'

//date conversion
echo dateIsoToIta('2016-08-18');//08/18/2016

//days and month
echo DAYS_ITA_ARR[0];//Lunedi
echo DAYS_ITA_ARR[date('w')];
echo MONTHS_ITA_ARR_1_BASED[12];//Dicembre
echo MONTHS_ITA_ARR_1_BASED[date('j')];

//misc
echo roman_year(50);//L
echo roman_year(10);//X
echo roman_year(2000);//MM
echo roman_year(2016);//MMXVI

/**
* String
 */
echo str_random(16);

NOTA: for full list of helpers functions, see the code in /src.

Change log

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email instead of using the issue tracker.

Credits

About Padosoft

Padosoft (https://www.padosoft.com) is a software house based in Florence, Italy. Specialized in E-commerce and web sites.

License

The MIT License (MIT). Please see License File for more information.