maksuco/helpers

一些有用的函数

安装: 263

依赖: 0

建议者: 0

安全性: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:laravel

V2.0 2022-09-15 13:08 UTC

README

此包包含一些PHP助手函数,用于日常任务

安装

此包需要Spatie/Analytics以生成图表。您可以通过composer安装此包

$ composer require maksuco/Helpers
OR
$ composer require maksuco/Helpers:dev-master

此包与Laravel +5.5的自动发现功能兼容,但与旧版本兼容

使用方法

<?php
//In laravel
\Helpers::mobile();
//In php
$helpers = new \Maksuco\Helpers\Helpers();
$helpers->mobile();
//use Illuminate\Support\Facades\Helpers;

设备检查:移动设备、平板电脑、桌面

返回正确的设备,例如:(300,'table',200),当是移动设备时响应为300,如果是桌面则为200。('mobile','table','desktop')

  \Helpers::agent($mobile,$table,$desktop);

检查是否是移动设备

  \Helpers::mobile();
  //Returns true or false

检查浏览器地区

返回浏览器地区,例如 'en',您发送您网站的可用语言,第一个是基础

  \Helpers::browserLocale(['en','es']);

检查设备、操作系统和浏览器

  \Helpers::user_agent();
  //Returns Array ( [desktop] => 1 [mobile] => [tablet] =>  [device] => desktop [browser] => Chrome [os] => Macintosh [result] => Macintosh Chrome )
  //Returns ['lang'], and ['estimate']=true if is not exact data

检查访问者是否为机器人

  \Helpers::botDetected();
  //Returns true or false

头像

此函数帮助您显示用户头像或Gravatar,只需发送用户数组或电子邮件。它返回图像路径或base64

  $img = \Helpers::avatar($user);
  OR
  {{\Helpers::avatar($user->email)}}

名字

帮助您从全名中显示用户名字,返回名字的最大长度为11

  {{\Helpers::firstname($fullname)}}
  //Gina Gutierrez returns Gina
  //Gi Gutierrez returns Gi Gutierrez

名字首字母

  {{\Helpers::initials($fullname)}}
  //SEND Sofia Loren
  //GET SL

加密

以下是如何实现加密的示例,将字符串转换为哈希键,使用2个安全密钥:一个在config.app(crypto_string)中设置,另一个在控制器中,例如 $user->id

  //SEND
  $security = Helpers::encrypt($string,$key);
  //AFTER
  $string = Helpers::decrypt($security,$key);
  //CONVERT LETTERS TO NUMBERS
  $string = Helpers::lettersToNumbers($string,$phone=false);

活动导航页面

发送当前页面名称,例如 'about' 或 'contactenos',它检查是否存在名为 $active(从控制器发送)的变量,然后检查路由是否有名称,然后检查页面的第一个部分,例如:about/history

  {{\Helpers::nav_active($page)}}
  //SEND: nav_active('about')
  //RETURNS: 'active'

文本解析器

将纯文本转换为包含真实HTML链接(空白是可选的,默认为true)

  {{\Helpers::text_parse($text,$blank)}}
  //SEND: Welcome to http:://apple.com
  //RETURNS: Welcome to <a href="http:://apple.com">http:://apple.com</a>

查找两个字符串之间的文本或替换

返回包含所有结果的数组

  {{\Helpers::getTextBetween($text,$start,$end)}}
  If you want to replace the text between two strings use
  {{\Helpers::replaceTextBetween($text,$start,$end,$replace)}}

获取所有国家

在选择中显示国家列表

  {{\Helpers::countries('en')}}
  //RETURNS: Array
  {{\Helpers::country('US')}}
  //RETURNS: "id": 241,"code": "US","name_en": "United States","name_es": "Estados Unidos","status": null,"tel": 1,"lang": "en","currency": "USD","currency_symbol": "$","timezone_group": null

按国家获取所有城市

国家中的城市列表

  {{\Helpers::cities('US')}}
  //RETURNS: "id": 241,"code": "US","name_en": "United States","name_es": "Estados Unidos","status": null,"tel": 1,"lang": "en","currency": "USD","currency_symbol": "$","timezone_group": null

检查大陆

返回按名称的大陆,简化返回欧洲(如果为eu)或美洲(如果为其他任何内容)

  {{\Helpers::continent('US')}}
  //RETURNS: 'america'
  {{\Helpers::continent('FR')}}
  //RETURNS: 'europe'

获取所有时区

在选择中显示时区列表

  {{\Helpers::timezones()}}
  //RETURNS: Array

获取所有语言或语言代码名称

  {{\Helpers::languages()}}
  //RETURNS: Array
  {{\Helpers::languages('en')}}
  //RETURNS: 'english'

获取所有货币或货币详细信息以供echo使用

在选择中显示国家列表或货币详细信息(如符号、小数位数、名称等)

  {{\Helpers::currencies()}}
  //RETURNS: Array of isoCodes
  {{\Helpers::currencies('complete')}}
  //RETURNS: Array of all currencies with: name, isoCode, symbol and other data
  {{\Helpers::currencies('usd')}}
  //RETURNS: All data of the currency
  {{\Helpers::currency_format('10000.00','usd',false)}}
  //'10000.00','usd' RETURNS: $10,000 usd
  //'100.30','usd' RETURNS: $100.30 usd
  //'10000.30','eur' RETURNS: 10.000,30 €
  //'10000.00','cop',true RETURNS: Array ["result" => "$10.000""symbol" => "$""htmlEntity" => "&#x20B1;""amount" => "10.000""isoCode" => "COP""symbolFirst" => true"decimalSeparator" => ",""thousandsSeparator" => "."]

货币格式

  {{\Helpers::moneyFormat($value,$currency)}}
  //SEND: 1234.56,'EUR' RETURNS: €1,234.56
  //SEND: 1234.00,'USD' RETURNS: $1,234

货币货币兑换

  {{\Helpers::currency_exchange($amount, $from, $to, $round)}}
  //SEND: 1,'EUR','USD' RETURNS: 1,99 (SAMPLE)
  //SEND: 1,'EUR','USD',true RETURNS: 2 (SAMPLE)

十进制格式

用于在MySQL十进制列中保存数字的有用工具

  {{\Helpers::decimalsFormat($number)}}
  //SEND: 1,234.56 RETURNS: 1234.56
  //SEND: 1,234 RETURNS: 1234.00
  {{\Helpers::decimalsFormat($number,false)}} //NO CENTS
  //SEND: 1,234.560 RETURNS: 1234560
  //SEND: 1,234 RETURNS: 1234

位置 GEOIP

从IP获取城市、国家、语言和其他数据:此产品包括由MaxMind创建的GeoLite2数据,可在https://www.maxmind.com获取,也要求composer require maksuco/helpers-geo。 https://github.com/maxmind/GeoIP2-php 更好的是,您可以使用 'ip-api' 或 'ipstack'(ipstack需要第三个参数作为ipstack密钥或IPSTACK_KEY=xxx在.env文件上 - laravel)

  $location_data = \Helpers::geoip($ip); //\Helpers::geoip($ip,'option'); OR \Helpers::geoip($ip,'ipstack','my_ipstack_key');
  $location_data = \Helpers::geoipLaravel($ip); //\Helpers::geoip($ip,'option'); OR \Helpers::geoip($ip,'ipstack','my_ipstack_key');

如果您需要该函数提供IP,只需在 $ip 中放置null。如果您还想包含isp信息,只需包含第二个调用。

IP时区中的日期

  \Helpers::timezone($ip,Carbon::now());

两点之间的位置距离

单位是可选的,默认是 "miles"(英里)

  $distance = \Helpers::distance($lat1, $lon1, $lat2, $lon2, $unit = "K");

追加到JSON(目前仅适用于第一级)

向JSON数据或子分类(子分类和限制为可选)追加新数据。

您发送DB列作为$JSON,新的对象或数组作为$new。

  \Helpers::appendtojson($json,$new,$subcategory,$limit)

限制,设置记录数量的限制

修改csv字符串操作:add(添加)、remove(移除)、check(检查)

发送id以添加、移除或检查是否存在于csv字符串中

  \Helpers::csvstring($action,$data,$new)

使用操作修改数组:add(添加)、remove(移除)、check(检查)

向数组发送新数据以添加、移除、检查是否存在于数组中或反转。适用于顺序和关联数组。反转如果不存在则添加,如果存在则移除并返回“已添加”或“已移除”操作

  \Helpers::array_process($action,$array,$new)

	//$array = ['michael','gina'];
  //array_process('add',$array,'bob') returns ['michael','gina','bob']

  //array_process('remove',$array,'michael') returns ['gina']

  //array_process('invert',$array,'michael') returns "removed" MALLLLLLl
  
  //Associative
	//$array = ['michael'=>'m'];
	//$new = ['michael'=>'something','donald'=>'duck','bob'=>'m'];
  //array_process('add',$array2,$new2) returns ['michael'=>'something','donald'=>'duck','bob'=>'m']
  
	//array_process('check',$array,'gina') returns TRUE

集合关系追加

仅通过一个额外查询将另一张表的列包含在集合中 $principal_relation_column = 主引用INT,通常是id(此为可选)

示例:($user,$post,'user_id',[ 'post_name'=>'name' ])

  \Helpers::collection_relation($principal_collection,$second_collection,$second_relation_column,['new_column'=>'second_column_name'],$principal_relation_column)

列:数组和JSON检查

检查值是否在列中(适用于json、数组和字符串explode)//仅1级 返回:true或false

  {{(\Helpers::column_check($data,$value))? 'YES!':'NO!'}} //($user->favorites,124)

列处理(如果存在于列中,则删除它,如果不存在,则添加它)

  \Helpers::column_process($data,$table,$column,$value) //($user,'users','favorites',124)

链接

检查域名是否没有http并添加它,以及其他链接、域名助手

  {{\Helpers::link($account->domain)}}
  //SEND: somedomain.com
  //RETURNS: http://somedomain.com
  //SEND: mailto:xxxx
  //RETURNS: mailto:xxxx

从电子邮件中获取域名

  $domain = \Helpers::domain_from_email($email);
  //returns the domain from an email if it's not a free service like gmail.com, else it returns false

从URL中获取域名

  $domain = \Helpers::domain_from_url($url);
  //returns the domain.com from http://www.domain.com/something
  \Helpers::domain_from_url($url,true); //subdomain true
  //returns the account.domain.com from http://account.domain.com/something

从URL中获取html部分

您需要dom扩展 https://stackoverflow.com/questions/14395239/class-domdocument-not-found

  $domain = \Helpers::url_html($url);
  //returns the body content of url
	$domain = \Helpers::url_html($url,'div');
	//returns a string with first div content
	$domain = \Helpers::url_html($url,'#home',true);
	//returns the section with id="home" and true converts all img src and links href to full urls.
	//using id selects the entire section, using elements only selects the content.

将数字转换为telto号码

  {{\Helpers::telto($phone)}}
  //SEND: +1 (305) 890 8989
  //RETURNS: 13058908989

获取youtube或vimeo链接的视频id,如果已经存在则返回相同的结果

  {{\Helpers::getVideoID($provider,$string)}}
  //SEND: 'youtube','https://www.youtube.com/watch?v=12345'
  //RETURNS: 12345
  //SEND: 'youtube','12345'
  //RETURNS: 12345
  //SEND: null,'https://host.com/file.mp4'
  //RETURNS: https://host.com/file.mp4

电子邮件和域名检查

  if(\Helpers::email_check($email)) {}
  //returns if the email is valid: true or false
  //Also checks if the domain exist
  OR

  if(\Helpers::domain_check($email)) {}
  //returns the domain from the email and checks if it exist
  OR
  if(\Helpers::domain_check('maksuco.com')) {}
  //Checks if the domain exist

获取文件类型

  \Helpers::getFileType('xxx.mov');
  //returns video

文件大小转换为字节计算器

发送 '1 mb' 并以字节为单位获取结果,发送测量值:b、kb、mb、gb、tb

  \Helpers::sizetobytes('1 mb');
  //returns xxxx bytes

生成随机字符串

发送随机字符串的长度

  \Helpers::random(4);
  //returns 4 letters mix with numbers
  \Helpers::random(4,true);
  //if you want only numbers
  \Helpers::random(4,false);
  //if you want only letters

生成随机名称

测试名称,发送 'name'、'lastname' 或 'fullname' 或留空以获取全名

  \Helpers::random_name($type);
  //returns John

生成随机引言

  \Helpers::random_quote();
  //returns Something special

隐藏字符串的一部分,如api_key

  \Helpers::hide_string($string);
  //returns 3234****9099
  \Helpers::hide_string($string, $middle = 'xx');
  //returns 3234xx9099
  \Helpers::hide_string('455667867897', $middle = 'xxddd','start');
  //returns with 'start' 4556xxddd
  //returns with 'end' xxddd7897

根据一天中的时间问候

返回下午好、早上好等。(时区为可选)

  \Helpers::greetings_by_time($timezone);
  //Returns: "Good morning", "Good afternoon", "Good evening" or "Good night"

根据日期差异返回天名

返回今天、明天、10天前等...

  \Helpers::date_day($days_difference,$lang);
  //lang is optional

文件名解析

从字符串或URL中获取文件名,您还可以解析它并获取基本名称、扩展名和文件名

  $filename = \Helpers::filename('http://xxx.com/this_is_the_name.png?v=xxx');
  //RETURNS: this_is_the_name.png
  OR
  $filename = \Helpers::filename('http://yyyy.com/this_is_the_name.png',true);
  //RETURNS ARRAY: basename: this_is_the_name.png, extension: png, filename: this_is_the_name
  //USE: $filename->basename

短标题

以下是如何实现短标题函数以将名称转换为短标题的示例

  $slug = \Helpers::slug('Hi how are you? Muy@#$%^&*good');
  //RETURNS: hi-how-are-you-muy-good
  OR
  $slug = \Helpers::slug($name);

转换文件名,第二个参数指定在末尾添加的随机附加项,可以是文本或INT

  $slug = \Helpers::slug_file('Hi how are you? Muy@#$%^&*good.jpg',0);
  //hi-how-are-you-muy-good.jpg
  OR
  $slug = \Helpers::slug_file($file->getClientOriginalName(),5);
  //hi-how-are-you-muy-good-hj567.jpg
  OR
  $slug = \Helpers::slug_file($filename,'great-doc');
  //hi-how-are-you-muy-good-great-doc.pdf

在此函数中,您可以指定新的文件名(REPLACE)并使用相同的扩展名

  $slug = \Helpers::slug_filename('SomeFile.jpg','new-name',0);
  //new-name.jpg
  OR
  $slug = \Helpers::slug_filename($file->getorriginalname(),'new-image',2);
  //new-image-9i.ext
  OR
  $slug = \Helpers::slug_filename($file,'one','great-images');
  //one-great-images.png

以下是如何实现随机函数的示例,将随机添加到文件名末尾,并检查其是否为数字或字符串

  $slug = \Helpers::slug_random('new-image');
  //new-image-hv8

以下是如何实现随机函数的示例,将随机添加到文件名末尾,并检查其是否为数字或字符串

  $slug = \Helpers::slug_username('Hi how are-you? Muy@#$%^&*good');
  //hihoware-youmuygood

代码

帮助预和代码内容

  $slug = \Helpers::prepareCode($codeVariable);
  //SEND: <script>xxxx</script>
  //RETURNS: &lt;script>xxxx&lt;/script>

社交分享

$url可以为null以自动获取当前网页URL

Facebook分享

$app_id为可选

  {{\Helpers::facebookshare($url,$title,$app_id)}}

Twitter分享

$username为可选

  {{\Helpers::twittershare($url,$title,$username)}}

LinkedIn分享

$username为可选

  {{\Helpers::linkedinshare($url,$title,$username)}}

Pinterest分享

$image为可选

  {{\Helpers::pinterestshare($url,$title,$image)}}

Whatsapp分享

  {{\Helpers::whatsappshare($url,$text)}}

Whatsapp聊天

  {{\Helpers::whatsappchat($phone,$url,$text)}}
  //\Helpers::whatsappchat('15551234xxx',null,'Im interested in your service')

替代target="_blank"添加弹出窗口

只需将onclick="return popup(this);添加到链接中

  {!!\Helpers::popup()!!}
  onclick="return popup(this);"

获取当前页面URL

  {!!\Helpers::currenturl()!!}

最小化HTML

  $html = \Helpers::minify_html($html);

处理Instagram爬虫

需要 https://github.com/postaddictme/instagram-php-scraper composer require raiym/instagram-php-scraper

  $media = \Helpers::instagram_process($instagram,'username');