Collection of agnostic PHP Functions and helpers
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
- 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.