padosoft/support

用于在包和其他项目中作为基础的无歧义助手

3.1.1 2024-07-25 09:24 UTC

README

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

此包提供了大量非常有用的无歧义助手,可用于包和其他项目的基础。

注意:其中一些助手由padosoft编写,另一些基于开源网络,还有一些经过重构和/或调整以适应我们的目的或改进。

##概述

所有助手函数都分为以下文件

  • 数组
  • 常量(通用有用常量)
  • 日期时间
  • 助手(杂项函数)
  • IP
  • 反射
  • 清理
  • 字符串
  • 验证
  • XML

##需求

  • php: >=7.0.0|^8.0|^8.1
  • nesbot/carbon(仅用于某些日期时间函数)

安装

您可以通过composer安装此包

$ composer require padosoft/support

用法

创建新的PHP文件,添加composer自动加载并开始使用函数。

<?php

require "vendor/autoload.php";

var_dump(str_random(16));

函数列表

数组

  • 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() : 从二维数组的子数组中删除给定的列。
  • array_remove_first_columns() : 从二维数组的子数组中删除第一列。
  • array_remove_last_columns() : 从二维数组的子数组中删除最后一列。

日期时间

  • 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

助手(杂项函数)

  • 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() : 获取给定状态代码的用于symfony/laravel控制台的颜色标签。
  • get_os_architecture() : 获取操作系统架构 32 或 64 位。
  • is_32bit() : 检查操作系统架构是否为32位。
  • is_64bit() : 检查操作系统架构是否为64位。
  • isRequestFromCloudFlare(): 检查请求(通过给定 $_SERVER)是否为cloudflare请求。
  • isCloudFlareIp(): 检查给定的IP是否为有效的cloudflare IP。
  • gzCompressFile(): 将磁盘上的文件进行GZIP压缩(名称后添加 .gz 扩展名),而不需要将整个源文件读入内存。
  • getFileMimeType(): 使用更多策略获取文件的MIME类型字符串,如果失败则返回FALSE。
  • getFileMimeTypeByFileInfo(): 使用较新的PHP finfo函数获取文件MIME类型字符串。
  • getFileMimeTypeByOSFileCommand(): 使用操作系统的file命令获取文件MIME类型字符串。据我所知,这仅在*NIX系统上可用。
  • getImageMimeTypeByExif_imagetype(): 使用exif_imagetype获取图像的MIME类型字符串。

IP

  • getIPVisitor
  • anonimizeIp
  • anonimizeIpv4() : 隐藏IPv4地址的最后一位。
  • anonimizeIpv4Compatibility() : 隐藏IPv4兼容地址的最后一位。
  • anonimizeIpv6() : 隐藏IPv6地址的最后一位。
  • anonimizeIpWithInet() : 使用inet php函数隐藏IP地址的最后一位。
  • getHost
  • getClientIps
  • getClientIp
  • checkIp
  • checkIp4
  • checkIp6
  • isFromTrustedProxy
  • expandIPv6Notation(): * 将 '::' 替换为适当的 ':0' 数量。
  • decbin32(): 确保二进制字符串被填充为零,总长度为32个字符。
  • ipInRange(): 确定IP是否位于通过几种替代格式指定的特定范围内。

反射

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

清理

  • strip_nl
  • jse : 转义javascript参数。
  • e : 转义html参数。
  • csse : 转义css参数。
  • attre : 转义html属性参数。
  • she() : 转义shell参数。
  • normalizeUtf8String : 规范字符串。从给定的UTF8编码文本中删除所有变音符号(如重音符号)并返回ASCII文本。
  • normalizerUtf8Safe() : 如果存在,使用php normalizer函数将utf8规范化为各种形式,否则返回原始字符串。
  • sanitize_filename
  • sanitize_pathname
  • sanitize_arr_string_xss
  • sanitize_string_xss
  • sanitize_urlencode
  • sanitize_email
  • sanitize_numbers
  • sanitize_floats
  • sanitize_phone() : 通过从电话号码中删除非法字符来清理字符串。

字符串

  • 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() : 从给定的字符串生成一个友好的"slug"。
  • firstStringBetween(): 返回参数start和end之间的第一个字符串。

验证

  • isStringNumberStartsWithMoreThanOneZero
  • isIntegerPositive
  • isIntegerPositiveOrZero
  • isIntegerNegative() : 检查值(int、float或string)是否为整数且小于零。
  • isIntegerNegativeOrZero() : 检查值(int、float或string)是否为整数且小于零或等于零。
  • isIntegerZero() : 检查值(int、float或string)是否为整数且等于零。
  • isInteger
  • isIntegerFloatingPoint
  • isFloatingPoint
  • isDouble
  • isPercent
  • isIntBool() : 检查值是否为整数/字符串0或1。
  • isDateIta
  • isDateIso
  • isDateTimeIso
  • isDateTimeIta
  • isTimeIso
  • isTimeIta
  • isDateZeroIso() : 检查字符串是否为0000-00-00。
  • isTimeZeroIso() : 检查字符串是否为00:00:00。
  • isDateTimeZeroIso() : 检查字符串是否为 '0000-00-00 00:00:00'
  • isDateOrDateZeroIso() : 检查字符串是否为 YYYY-mm-dd 且为有效日期或 0000-00-00
  • isDateTimeOrDateTimeZeroIso() : 检查字符串是否为 'YYYY-mm-dd HH:ii:ss' 且为有效日期或 '0000-00-00 00:00:00'
  • isDateZeroIta() : 检查字符串是否为 00/00/0000
  • isTimeZeroIta() : 检查字符串是否为 00:00:00
  • isDateTimeZeroIta() : 检查字符串是否为 '00/00/0000 00:00:00'
  • isDateOrDateZeroIta() : 检查字符串是否为 dd/mm/YYYY 且为有效日期或 00/00/0000
  • isDateTimeOrDateTimeZeroIta() : 检查字符串是否为 'dd/mm/YYYY HH:ii:ss' 且为有效日期或 '00/00/0000 00:00:00'
  • hasMinAge
  • hasMaxAge
  • hasAgeInRange
  • isInRange
  • isDay
  • isMonth
  • isJewishLeapYear
  • betweenDateIso
  • betweenDateIta
  • isMail
  • isIPv4
  • isIPv6
  • isIPv4Compatibility
  • isIP
  • isUrl
  • isHostname
  • urlW3c
  • isVATRegisteredInVies() : 使用欧盟委员会 VIES 服务验证欧洲增值税号,确认增值税号有权进行社区内交易时必须使用该服务。
  • isITVat() : 检查意大利增值税号(Partita IVA)。
  • isEuVatNumber() : 检查给定有效的欧盟增值税号是否符合特定欧盟国家的增值税规则(目前仅针对意大利)以及可选地检查欧盟 VIES 服务。
  • getCoutryCodeByVatNumberTest($val, $fallback): 尝试从增值税号中提取欧盟国家代码,如果失败则返回 $fallback。
  • isCf
  • isAlpha
  • isAlphaNumeric
  • isAlphaNumericDash
  • isAlphaNumericWhiteSpaces
  • isNumeric() : 确定提供的值是否仅包含数字字符,带或不带(默认)符号。
  • isNumericWithSign() : 确定提供的值是否仅包含带符号的数字字符。
  • isNumericWithoutSign() : 确定提供的值是否仅包含不带符号的数字字符。
  • isBool
  • isBoolOrIntBool
  • isCrediCard
  • isValidHumanName
  • isIban
  • hasFileExtension
  • isphoneNumber
  • isJsonString
  • isUuid
  • isGeoCoordinate
  • isLatitude
  • isLongitude
  • isAscii
  • isUtf8

XML

  • xmlUrl2array
  • xml2array
  • array2xml
  • array2SimpleXMLElement

常量(通用有用常量)

  • 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

用法

您可以直接调用每个函数。示例

<?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: 要获取辅助函数的完整列表,请查看 /src 中的代码。

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

测试

$ composer test

贡献

有关详细信息,请参阅 CONTRIBUTING

安全性

如果您发现任何与安全相关的问题,请通过电子邮件而不是使用问题跟踪器。

鸣谢

关于 Padosoft

Padosoft (https://www.padosoft.com) 是一家位于意大利佛罗伦萨的软件公司。专注于电子商务和网站。

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。