PHP ที่ใช้บ่อยจะมีประโยชน์มากสำหรับนักพัฒนาในระหว่างเขี ยนโปรแกรมฯ ก็อปไปใช้ได้ทันที ช่วยให้ทำงานได้เร็วกว่าการพิมพ์ทุกตัวแน่นอน
คำนวนจำนวนหน้าจากข้อมูลทั้งหมด สำหรับใช้ทำตัวเลื่อนหน้า Pagination
if ($numCountTotalList) { $numTotalRow = $numCountTotalList; $numTotalPage = ceil($numTotalRow / $LIMIT); $arrListPaginationData = [ "TotalRow" => $numTotalRow , "TotalPage" => $numTotalPage, ]; } //if
ล้างข้อมูล Html Style ที่ก็อปมาจาก Ms Words
function cleanWordsStyle( $dbStyleWords = "" ) { if ( $dbStyleWords == "" ) return; $htmDecode = htmlspecialchars_decode( $dbStyleWords ); return preg_replace( '/style=\\"[^\\"]*\\"/', '', $htmDecode ); }
เปลี่ยนการเชื่อมต่อ mysql ใน PHP5 เป็น mysqli ใน PHP7
$hostname_host = "localhost"; $database_host = "db-name"; $username_host = 'user-name'; $password_host = 'db-Pass'; $ConnectName = mysqli_connect($hostname_host, $username_host, $password_host) or trigger_error(mysqli_error(),E_USER_ERROR); mysqli_query($ConnectName, "SET NAMES 'UTF8'"); mysqli_select_db($ConnectName, $database_host); mysqli_real_escape_string($ConnectName, $theValue); mysqli_query($ConnectName, $QuerySQL) mysqli_close($ConnectName);
ย้ายไฟล์ไปยังโฟลเดอร์อื่น
/** * ย้ายไฟล์ไปยังโฟลเดอร์อื่น * bool moveToTemp( $fromFile, $toFile ); */ function moveToTemp( $fromFile="", $toFile="" ) { $isMoveSuccess = false; $fromFile = trim( $fromFile ); $toFile = trim( $toFile ); if ( empty( $fromFile ) || empty( $toFile ) ) return $isMoveSuccess; $fromFileWithFol = $fromFile; $toFileWithFol = $toFile; if(rename ( $fromFileWithFol, $toFileWithFol )) { $isMoveSuccess = true; } return $isMoveSuccess; }
ตรวจสอบมีภาษาอังกฤษซ่อนในข้อความหรือไม่
/** * ตรวจสอบมีภาษาอังกฤษซ่อนในข้อความหรือไม่ * bool IsEnglishText( $text="" ); //output: true or false */ function IsEnglishText( $text="" ) { $isEnglish = false; $text = trim( $text ); if( empty($text) )return $isEnglish; $textRegex = "[aeiou]"; if( preg_match("/{$textRegex}/i", $text ) ){ $isEnglish = true; } return $isEnglish; } //func
ลบคำนำหน้าชื่อบริษัท
/** * ลบคำนำหน้าชื่อบริษัท * string setRemoveCompanyHead( "บมจ.ใกล้กัน" ); //output: ใกล้กัน */ function setRemoveCompanyHead( $companyName="" ) { $companyName = trim( $companyName ); if( empty($companyName) )return; $arrHeadName = array( "บจก.", "บมจ.", "หจก." ); $companyName = str_replace( $arrHeadName, '', $companyName ); $companyName = trim( $companyName ) ; return $companyName; } //func
ฟอร์แมตข้อความสำหรับ Query การค้นหาในฐานข้อมูล SQL
function setWordExtend( $txtSearch="" ) { $txtSearch = trim( $txtSearch ); if ( empty( $txtSearch ) ) return; //clear space on load if( preg_match("/ /", $txtSearch) ) { $txtSearch = str_replace( ' ', '%', $txtSearch ); } $arrWords = array( "บจก" => "%บจก%" , "บมจ" => "%บมจ%" , "หจก" => "%หจก%" ); foreach( $arrWords as $keyWords => $valWords ) { if( preg_match("/{$keyWords}/i", $txtSearch ) ){ $txtSearch = str_replace( $keyWords, $valWords, $txtSearch ); } } //foreach return $txtSearch; } //func
กรองเอาเฉพาะวันที่
/** * กรองเอาเฉพาะวันที่ * string getSlashDateOnlyFromText( '12/09/1984 XX' ); //output: 12/09/1984 */ function getSlashDateOnlyFromText( $number="" ) { $number = trim( $number ); if( empty($number) )return; $number = preg_replace( "/[^\d\/]/", "", $number ); return $number; }
กรองเอาเฉพาะเวลา
/** * กรองเอาเฉพาะเวลา * string getTimeOnlyFromText( '12.00 AM' ); //output: 12:00 */ function getTimeOnlyFromText( $number="" ) { $number = trim( $number ); if( empty($number) )return; $number = str_replace( ".", ":", $number ); $number = preg_replace( "/[^\d\:]/", "", $number ); return $number; }
ฟอร์แมตตัวเลขให้มีคอมม่าขั้น + รองรับจุดทศนิยม(ตาม Input)
/** * ฟอร์แมตตัวเลขให้มีคอมม่าขั้น + รองรับจุดทศนิยม(ตาม Input) * string numPrice( 10000 ) //output: 10,000 */ function numPriceFormat( $number ) { $number = doubleval($number); if (preg_match("/\./", $number)) { $valNum = number_format($number, 2); } elseif (is_numeric($number)) { $valNum = number_format($number); } else { $valNum = $number; } return $valNum; }
ป้องกันเบอร์โทรด้วยฟอร์แมต XXX ไว้ 3 ตัวท้าย
วิธีใช้: getTelePhoneProtection( 0865555556 ); //Output: 08655xxx56 function getTelePhoneProtection( $telephone="" ) { $telephone = trim( $telephone ); if ( empty( $telephone ) ) return; //get only number $telephone = getNumberOnlyFromText( $telephone ); //number format $firstFiveNumber = substr( $telephone, 0, 5 ); $lastTwoNumber = substr( $telephone, -2 ); //Merge $telephone = "{$firstFiveNumber}xxx{$lastTwoNumber}"; return $telephone; }
คัดเอาเฉพาะตัวเลขเท่านั้น (ไม่เอาตัวอักษรอื่นที่ไม่ใช่ตัวเลข)
/** * คัดเอาเฉพาะตัวเลขเท่านั้น (ไม่เอาตัวอักษรอื่นที่ไม่ใช่ตัวเลข) * string getNumberOnlyFromText( '086-666-6666' ); //output: 0866666666 */ function getNumberOnlyFromText( $number="" ) { $number = trim( $number ); if( empty($number) )return; $number = preg_replace( "/[^\d]/", "", $number ); return $number; }
นับตัวอักษรภาษาไทย
getLenString("สวัสดี"); // Output: 6function getLenString( $text = "" ) { $numLen = 0; $text = trim( $text ); if ( empty( $text ) ) return $numLen; $numLen = mb_strlen( $text, "UTF-8" ); return $numLen; }
ตรวจสอบชนิดไฟล์เป็นรูปภาพ ใช่หรือหม่
function getIsImage( $filename="" ) { $isImage = false; $filename = trim( $filename ); if( empty($filename) )return $isImage; $extension = pathinfo( $filename, PATHINFO_EXTENSION ); $extension = trim( $extension ); $extension = strtolower( $extension ); $arrExtensionImage = array( "jpg", "jpeg", "png", "gif" ); if( in_array($extension, $arrExtensionImage) ) { $isImage = true; } return $isImage; }
ดึง Array 2 ตัวแรกออกออกมา และลบ Array 2 ตัวที่ดึงออก
$a1 = array( "key1" => "red", "key2" => "green", "key3" => "blue", "key4" => "yellow" ); $a2 = array_slice( $a1, 0, 2, true ); //Output: Array ( [key1] => red [key2] => green ) array_splice( $a1, 0, 2 ); //Output: Array ( [key3] => blue [key4] => yellow ) print_r( $a1 ); print_r( $a2 )
การรวม Array แบบรวม Index ต่อเนื่อง 0, 1, 2, 3
$array1 = array_merge( $array1, $array2 );
การรวม Array แบบรวม Index ไม่ต่อเนื่อง Associative arrays
$array1 = $array1 + $array2;
แสดงไอคอนประเภททรัพย์ใช้ร่วมกับ CSS
//ส่วนของ CSS วิธีใช้: div: icon condo .icon::before { background-size: contain !important; background-repeat: no-repeat !important; background-position: center !important; height: 20px; width: 20px; float: left; margin-right: 5px; } .condo::before { content: ""; display: block; background: url(/images/mywebsite/icon-condo.svg); } .house::before { content: ""; display: block; background: url(/images/mywebsite/icon-house-01.svg); } .townhouse::before { content: ""; display: block; background: url(/images/mywebsite/icon-townhouse.svg); } .apartment::before { content: ""; display: block; background: url(/images/mywebsite/icon-apartment.svg); } .land::before { content: ""; display: block; background: url(/images/mywebsite/icon-land.svg); } //ส่วนของ PHP function getCssPropertyType($propertytypeID = "") { $cssPropertyType = "condo"; //default $propertytypeID = intval($propertytypeID); if (!$propertytypeID) { return $cssPropertyType; } switch ($propertytypeID) { case 1: $cssPropertyType = "house"; break; case 2: $cssPropertyType = "condo"; break; case 3: $cssPropertyType = "townhouse"; break; case 5: $cssPropertyType = "apartment"; break; case 8: $cssPropertyType = "land"; break; } //switch return $cssPropertyType; } //func
ตรวจสอบเป็น Array ไม่ใช่ค่าว่าง
function isArrAvailable($array=array()) { $boolArrAvailable = false; if(empty($array))return $boolArrAvailable; if(is_array($array)&&sizeof($array)) { $boolArrAvailable = true; } return $boolArrAvailable; }
//Output: True or Fasle
รับเฉพาะ Array ตัวแรกสุด (สำหรับ PHP 7.3.0+)
$array = array( 33 => 'guimee', 36 => 'for', 42 => 'computer' ); $keyFirst = getArrFirst( $array ); //Output: [33] => guimee function getArrFirst($array = array()) { $arrFirst = array(); if (empty($array)) { return $arrFirst; } $keyFirst = array_key_first($array); $arrFirst[$keyFirst] = $array[$keyFirst]; return $arrFirst; }
การจับเวลาทำงานของ PHP ใช้ microtime() สำหรับเทียบเวลาเริ่มต้นกับเวลาสิ้นสุด
// starting time
$time_start = microtime( true );
// Code of program
$num = 0;
// do
for ( $i = 0; $i < 100000000; $i += 1 ) {
$num += 10;
}
// ending time
$time_end = microtime( true );
// Time difference
$time = $time_end - $time_start;
$time = number_format( $time, 4 );
echo "{$time} Seconds"; //Output: 1.4328 Seconds
ตรวจสอบข้อความเป็นวันที่หรือเปล่า
if (strtotime($date_string)) { // it's in date format }
ตัดคำภาษาไทยให้เหลือตามจำนวน(ตัวอักษร) ที่ต้องการ เช่นหากเกิน 300 ตัวอักษร ให้ใส่จัดไข่ปลา 3 จุด(...) ท้ายข้อความ
function WordCutter($text = "", $max = 300) { $text = trim($text); if (empty($text)) { return $text; } if (mb_strlen($text, 'UTF-8') > $max) { $text = mb_substr($text, 0, $max, 'UTF-8'); $text .= "..."; } return $text; }
ลดขนาดรูปภาพบน Wordpress.com ลดตามขนาดที่เราต้องการเช่นความกว้าง 900 เพื่อแก้ปัญหาหากรูปมีชนาดใหญ่จะทำให้โหลดหน้าเว็บช้า
function setWpImage($image = "", $width = 900) { $image = trim($image); if (empty($image)) { return $image; } //check wordpress if (!preg_match("/wordpress/i", $image)) { return $image; } //check width format if (!preg_match("/w=/i", $image)) { $image = "{$image}?w={$width}"; } return $image; } //func
แปลง Multidimensional Arrays เป็นอาเรย์(Array) ปกติ
function array_flatten( $array ) { if ( !is_array( $array ) ) { return FALSE; } $result = array(); foreach ( $array as $key => $value ) { if ( is_array( $value ) ) { $result[] = $array[ $key ]; } else { $result[] = $value; } } return $result; }
Multidimensional Arrays
หลังจากแปลงเป็นอาเรย์(Array) ปกติ
การตัด Query ออกจาก URL
/** * cleanQueryFormURL( $url="" ); */ function cleanQueryFormURL( $url="" ) { if(empty($url))return; $arrUrl = pathinfo( $url ); $dirName = $arrUrl["dirname"]; $baseName = $arrUrl["basename"]; $arrUrl = parse_url( $baseName ); $pathFilename = $arrUrl["path"]; if( isFilenameFilter( $pathFilename ) ) { $url = "{$dirName}/{$pathFilename}"; } return $url; } //func function isFilenameFilter( $filename="" ) { $isFilename = false; $filename = trim( $filename ); if(empty($filename))return $isFilename; // here add filename $arrFileName = array( "value.php" ); if( in_array($filename, $arrFileName) ) { $isFilename = true; } return $isFilename; } //func
ตรวจสอบข้อความเป็นข้อมูลชนิดวันที่หรือไม่
if (DateTime::createFromFormat('Y-m-d H:i:s', $myString) !== false) { // it's a date }
ฟอร์แมตเบอร์โทร ด้วย PHP สำหรับใส่ขีดขั้นระหว่างตัวเลขให้อ่านง่าย ดูสวยงาม
วิธีแรก (แนะนำ):
function phoneNumberFormat( $number ) { // Allow only Digits, remove all other characters. $number = preg_replace( "/[^\d]/", "", $number ); // get number length. $length = strlen( $number ); if ( $length == 10 ) { $number = preg_replace( "/^1?(\d{3})(\d{3})(\d{4})$/", "$1-$2-$3", $number ); } elseif($length == 9) { $number = "0{$number}"; $number = preg_replace( "/^1?(\d{3})(\d{3})(\d{4})$/", "$1-$2-$3", $number ); } //if return $number; }
วิธีที่สอง:
echo PhoneFormatting( "0888888888" ); //OUTPUT: 088-888-8888 echo PhoneFormatting( "022222222" ); //OUTPUT: 022-222-222 echo PhoneFormatting( "+02025550170" ); //OUTPUT: 202-555-0170 function PhoneFormatting( $phone="" ) { $phone = trim($phone); if( $phone=="" )return $phone; if ( preg_match( '/^\+[0-9]([0-9]{3})([0-9]{3})([0-9]{4})$/', $phone, $value ) || preg_match( '/^([0-9]{3})([0-9]{3})([0-9]{4})$/', $phone, $value ) || preg_match( '/^([0-9]{3})([0-9]{3})([0-9]{3})$/', $phone, $value ) ) { $arrValue[] = $value[1]; $arrValue[] = $value[2]; $arrValue[] = $value[3]; $phone = implode( "-", $arrValue ); }//if return $phone; }//func
วิธีที่สาม:
/** * ฟอร์แมตเบอร์โทร รองรับ ( '0875552233', '+11234567890' ) * string TelephoneFormat( '0875552233' ); //output: 087-555-2233 */ function TelephoneFormat( $telephone="" ) { $telephone = trim( $telephone ); if ( empty( $telephone ) ) return; if( preg_match( '/^(\d{3})(\d{3})(\d{4})$/', $telephone, $matches ) || preg_match( '/^\+\d(\d{3})(\d{3})(\d{4})$/', $telephone, $matches ) ) { $telephone = $matches[1] . '-' .$matches[2] . '-' . $matches[3]; } return $telephone; }
เริ่มต้นใช้ Session ด้วย PHP
if (!isset($_SESSION)) { session_start(); }
ลบข้อมูลที่ไม่ต้องการออกจาก Array ด้วย PHP
if (in_array($showPlistID, $arrPropList)) {
//หาตำแหน่ง Array $keyShowPlist = array_search($showPlistID, $arrPropList);
//remove by key if ($keyShowPlist) { unset($arrPropList[$keyShowPlist]); } }
เปลี่ยนค่า URL สำหรับทำตัวเลื่อนหน้าเช่น 1 2 3 (ความเป็นจริงคือ URL มี Parameter หลายค่า แต่เราต้องการเปลี่ยนเพียงค่า year ค่าเดียว)
วิธีใช้: setNormalQuery( "2021" ); OUTPUT: year=2021&p1=1&... function setNormalQuery( $year="", $paramName="year" ) { if ( $year == "" ) return; $arrQuery = array(); $uriLocation = $_SERVER[ 'REQUEST_URI' ]; $arrURL = parse_url( $uriLocation ); $val_Qurey = $arrURL[ "query" ]; if ( $val_Qurey != "" ) { parse_str( $val_Qurey, $arrQuery ); $arrQuery[ $paramName ] = $year; } //remake $year = http_build_query( $arrQuery ); return $year; }
Remote Image ดึงรูปภาพจากเว็บอื่นมาแสดงบนเว็บมี SSL
$get_Image = trim($_GET["Image"]); if( $get_Image=="" )die; $filename = basename($get_Image); $file_extension = strtolower(substr(strrchr($filename,"."),1)); if($file_extension=="")die; switch( $file_extension ) { case "gif": $ctype="image/gif"; break; case "png": $ctype="image/png"; break; case "jpeg": case "jpg": $ctype="image/jpeg"; break; case "svg": $ctype="image/svg+xml"; break; default: } header('Content-type: ' . $ctype); $pathFol = "http://[domain]/images/img_gps"; $ImagePath = "{$pathFol}/{$get_Image}"; echo @file_get_contents( $ImagePath );
นับจำนวนวันจากเดือนที่ระบุมีกี่วันด้วย PHP
//วิธีใช้: MonthDays('02','2021'); OUTPUT: 28 function MonthDays($someMonth, $someYear) { return date("t", strtotime($someYear . "-" . $someMonth . "-01")); }
ลบแท็ก Style และ Font-size ออกจาก Html ด้วย PHP
function removeFontSize_v2( $html="" ) { $html = trim( $html ); if( $html=="" )return; return preg_replace('/font-size:..px/i', "", $html); } function removeStyleTag_v2( $html="" ) { $html = trim( $html ); if( $html=="" )return; return preg_replace( '/(<[^>]+) style=".*?"/i', '$1', $html ); }
ตรวจสอบ Trust Domain ด้วย HTTP_REFERER ใช้ประโยชน์โดยให้โปรแกรมทำงานเฉพาะส่งจาก Domain ที่เราระบุไว้เท่านั้นเช่น กรองสแปมอย่างได้ผล
function isTrustDomain( $domainRefer="" ) { $isTrust = 0; $domainRefer = trim( $domainRefer ); if( $domainRefer=="" || !preg_match( "/http/i", $domainRefer ) )return $isTrust; $val_DomainName = getDomainNameFromURL( $domainRefer ); $allowDomain = array( "guimee.com" ); //ระบุชื่อโดเมน foreach( $allowDomain as $valAllowDomain ) { if ( preg_match( "/{$valAllowDomain}/i", $val_DomainName ) ) { $isTrust = 1; break; } } //foreach return $isTrust; } //func function getDomainNameFromURL( $url="" ) { $url = trim( $url ); if( $url=="" || !preg_match( "/http/i", $url ) )return; $arrURL = parse_url( $url ); $url = $arrURL[ "host" ]; return $url; }//func
แปลงแท็ก BR เป็น New Line (nl)
function convertBr2Nl( $text ) { $breaks = array("< br />","< br>","< br/>"); $text = str_replace($breaks, "\r\n", $text); return $text; }
รวมการเคาะหลายบรรทัดให้เหลือบรรทัดเดียว แนะนำให้ใช้ก่อนบันทึกใน database
function mergeMultiNewlineToOne( $text="" ) { $text = trim( $text ); if ( $text == "" ) return; return preg_replace('"(\r?\n){2,}"', "\n\n", $text); }
ฟอร์แมต ชื่อ นามสกุลพร้อมคำนำหน้า หลังดึงข้อมูลจาก database
//Input: วรวุฒิ บุญวงค์ษา,คุณ //Output: คุณวรวุฒิ บุญวงค์ษา function setFullname($dbname = "") { if ($dbname == "") return; if (preg_match("/,/i", $dbname)) { $arrName = explode(",", $dbname, 2); $dbname = "{$arrName[1]}{$arrName[0]}"; } //if return $dbname; } //func
ตรวจสอบ Browser ว่าทำงานอยู่บนเครื่อง MacOS หรือไม่
// TRUE = ใช่ MacOs
function isMacOS() { $isMacOS = false; $user_agent = getenv("HTTP_USER_AGENT"); if ( strpos( $user_agent, "Mac" ) !== FALSE ) { $isMacOS = true; } return $isMacOS; }//func
แปลงทศนิยม 6 หลักสำหรับ พิกัดละติจูดและลองจิจูดบนแผนที่
/** * shortPointFormat( 'ค่า Lat, Lon', 'ทศนิยมที่ต้องการ' ); */ function shortPointFormat( $decimal="", $num=6 ) { $decimal = doubleval( $decimal ); if( !$decimal )return 0; $decimal = number_format( $decimal, 6, ".", "" ); $decimal = doubleval( $decimal );
return $decimal; }
เพิ่ม หรือลดเวลา ด้วย PHP
เวลาเริ่มต้น $time = strtotime('10:00');
ระบุนาที $minut = 30; ลดลง 30 นาที $startTime = date("H:i", strtotime("-{$minut} minutes", $time)); //OUTPUT: 09:30 เพิ่มอีก 30 นาที $endTime = date("H:i", strtotime("+{$minut} minutes", $time)); //OUTPUT: 10:30
ลดเวลาโดยใช้ฟังค์ชั่น
/** * ลด เวลาเข้ามาเช่น 60 นาที * string timeDeCrease( '10:59' ); //Output: 09:59 */ function timeDeCrease($timeText = "", $minute = 60) { $timeText = trim($timeText); $timeText = getTimeOnlyFromText($timeText); if (empty($timeText)) { return; } $time = strtotime($timeText); $timeText = date("H:i", strtotime("-{$minute} minutes", $time)); return $timeText; } //func
เพิ่มเวลาโดยใช้ฟังค์ชั่น
/** * เพิ่ม/เลื่อน เวลาออกไปเช่น 60 นาที * string timeInCrease( '10:59' ); //Output: 11:59 */ function timeInCrease($timeText = "", $minute = 60) { $timeText = trim($timeText); $timeText = getTimeOnlyFromText($timeText); if (empty($timeText)) { return; } $time = strtotime($timeText); $timeText = date("H:i", strtotime("+{$minute} minutes", $time)); //OUTPUT: 10:30 return $timeText; } //func
ฟอร์แมตวันที่ให้คั้นด้วยสแลช(Slash /)
/** * แปลงข้อมูลวันที่แบบขึนกลาง (/) * string slashDateFormat( '1984-09-12' ); //Output: 12/09/1984 */ function slashDateFormat( $strDate="" ){ if( empty( $strDate ) )return; $strDate = str_replace('/', '-', $strDate); $slashDate = date('d/m/Y', strtotime($strDate)); return $slashDate; }
ฟอร์แมตวันที่ให้คั้นด้วยขีดกลาง (Dash -)
/** * แปลงข้อมูลวันที่แบบขึนกลาง (-) * string dashDateFormat( '12/09/1984' ); //Output: 1984-09-12 */ function dashDateFormat( $strDate="" ){ if( $strDate=="" )return; $strDate = str_replace('/', '-', $strDate); $dashDate = date('Y-m-d', strtotime($strDate)); return $dashDate; }
เพิ่มเดือน หรือลดเดือน
$intMonth = 6; // next 6 month echo setExtendMonth( $intMonth ); //Output: 2022-04-20 00:00:00 // decrease 6 month echo setDecreaseMonth( $intMonth ); //Output: 2021-04-20 00:00:00 //เดือน => เลยไปอีก function setExtendMonth( $intMonth="", $strDate="" ) { $intMonth = intval( $intMonth ); if( !$intMonth )return; //Current $curDate = ( !empty($strDate) )? $strDate : date( "Y-m-d H:i:s" ); //Next return date( 'Y-m-d H:i:s', strtotime( "+{$intMonth} month", strtotime( $curDate ) ) ); } //เดือน => ย้อนหลัง function setDecreaseMonth( $intMonth="", $strDate="" ) { $intMonth = intval( $intMonth ); if( !$intMonth )return; //Current $curDate = ( !empty($strDate) )? $strDate : date( "Y-m-d H:i:s" ); //Previous return date( 'Y-m-d H:i:s', strtotime( "-{$intMonth} month", strtotime( $curDate ) ) ); }
เพิ่มวันที่ หรือลดวันที่ ด้วย PHP
//วันที่ => ถัดไป function setExtendDate( $intDate="", $manualDate="" ) { $intDate = intval( $intDate ); if( !$intDate )return; //Current $curDate = ( !empty( $manualDate ) ) ? $manualDate : date( "Y-m-d" ); //Next return date( 'Y-m-d H:i:s', strtotime( "+{$intDate} days", strtotime( $curDate ) ) ); } //วันที่ => ย้อนหลัง function setDecreaseDate( $intDate="", $manualDate="" ) { $intDate = intval( $intDate ); if( !$intDate )return; //Current $curDate = ( !empty( $manualDate ) ) ? $manualDate : date( "Y-m-d" ); //Previous return date( 'Y-m-d H:i:s', strtotime( "-{$intDate} days", strtotime( $curDate ) ) ); }
แปลง Character เป็นรหัส ASCII ด้วย PHP
echo getCharToASCII("o"); //OUTPUT: & #149; function getCharToASCII( $char="" ) { $char = trim( $char ); if( $char=="" )return; $charOrd = _uniord( $char ); $char = "{$charOrd};"; return $char; } function _uniord($c) { if (ord($c{0}) >=0 && ord($c{0}) <= 127) return ord($c{0}); if (ord($c{0}) >= 192 && ord($c{0}) <= 223) return (ord($c{0})-192)*64 + (ord($c{1})-128); if (ord($c{0}) >= 224 && ord($c{0}) <= 239) return (ord($c{0})-224)*4096 + (ord($c{1})-128)*64 + (ord($c{2})-128); if (ord($c{0}) >= 240 && ord($c{0}) <= 247) return (ord($c{0})-240)*262144 + (ord($c{1})-128)*4096 + (ord($c{2})-128)*64 + (ord($c{3})-128); if (ord($c{0}) >= 248 && ord($c{0}) <= 251) return (ord($c{0})-248)*16777216 + (ord($c{1})-128)*262144 + (ord($c{2})-128)*4096 + (ord($c{3})-128)*64 + (ord($c{4})-128); if (ord($c{0}) >= 252 && ord($c{0}) <= 253) return (ord($c{0})-252)*1073741824 + (ord($c{1})-128)*16777216 + (ord($c{2})-128)*262144 + (ord($c{3})-128)*4096 + (ord($c{4})-128)*64 + (ord($c{5})-128); if (ord($c{0}) >= 254 && ord($c{0}) <= 255) // error return FALSE; return 0; }
กำหนดภาษาจากข้อความ ด้วย PHP
function getCharLangFormText($text = "") { $charLang = 'TH'; $text = trim($text); if ($text == "") { return $charLang; } $arrCharEng = ['a', 'e', 'i', 'o', 'u']; foreach ($arrCharEng as $valCharEng) { if (preg_match("/{$valCharEng}/i", $text)) { $charLang = 'EN'; break; } //if } //foreach return $charLang; }
แบ่งหน้า SQL Server 2019 ด้วย PHP
// #### Begin Pagination แบ่งหน้า { $get_page = 1; //หน้า $LIMIT = 12; //จำนวนข้อมูลที่ต้องการ if ($get_page <= 0) { $page = 1; } else { $page = $get_page; } $start = ($page - 1) * $LIMIT; //$start = $start - 1; //check if ($start < 0) { $start = 0; } $sql_Pagination = " OFFSET {$start} ROWS FETCH NEXT {$LIMIT} ROWS ONLY "; // #### End Pagination แบ่งหน้า }
แปลงพื้นที่ ตารางวา เป็น ตารางเมตร
/** * แปลง ตารางวา เป็น ตารางเมตร * float calcSqwToSqm( $Sqw = 0); */ function calcSqwToSqm($Sqw = 0) { $val_Sqm = 0; $Sqw = floatval($Sqw); if (!$Sqw) return $val_Sqm; $radioSqw = 4; // 1 ตร.ว. = 4 ตร.ม. $val_Sqm = $Sqw * $radioSqw; return $val_Sqm; }
คำนวนพื้นที่เป็นตารางวาด้วย PHP
function calcLandSQW($numRai = "", $numNgan = "", $numWah = "") { $numRai = doubleval($numRai); $numNgan = doubleval($numNgan); $numWah = doubleval($numWah); if (!$numRai && !$numNgan && !$numWah) { return 0; } if ($numRai) { $numRai = ($numRai * 4) * 100; //400 ตรว. = 1 ไร่ } if ($numNgan) { $numNgan = $numNgan * 100; //100 ตรว. = 1 งาน } return $numRai + $numNgan + $numWah; }
ตรวจสอบอีเมล์ถูกต้องหรือไม่ด้วย PHP
/**
* ลบตัวอักษรเพี้ยนและตัวอักษรไทยทั้งหมดออกจากอีเมล์ */ function cleanEmail( $email="" ) { $email = trim( $email ); if( $email=="" )return; // Remove all illegal characters from email $email = filter_var( $email, FILTER_SANITIZE_EMAIL ); return $email; } /** * ตรวจอีเมล์ถูกต้องหรือไม่: TRUE OR FALSE */ function isValidEmail( $email="" ) { $email = trim( $email ); if( $email=="" )return FALSE; return (filter_var($email, FILTER_VALIDATE_EMAIL))? TRUE : FALSE; }
บันทึกรูปภาพจากข้อมูล Image Base64 ส่งจากเว็บ Browser ด้วย PHP (หากบันทึกสำเร็จจะส่งออกเป็นชื่อรูปภาพ)
/** * v2: save2ImageFilename( $imgBase64, array( "fol"=>, "file"=> ) ); */ function save2ImageFilename( $imgBase64, $arrFolAndFile=array() ) { //check if( !is_array($arrFolAndFile) || !sizeof($arrFolAndFile) )return; $arrAllowExtension = array( "jpeg", "jpg", "png", "gif" ); $val_folName = trim( $arrFolAndFile[ "fol" ] ); $val_fileName = trim( $arrFolAndFile[ "file" ] ); //check if($val_fileName=="")return; $image_parts = explode( ";base64,", $imgBase64 ); $image_type_ext = explode( "image/", $image_parts[ 0 ] ); $exName = $image_type_ext[1]; //new extension from image if ( in_array( $exName, $arrAllowExtension ) ) { $arrFilename = explode( '.', $val_fileName ); $strFilename = $arrFilename[0]; // $oldFilenameExt = $arrFilename[1]; $val_fileName = "{$strFilename}.{$exName}"; } if($val_folName!="") { $pathFilename = "{$val_folName}/{$val_fileName}"; } else { $pathFilename = $val_fileName; } $image_base64 = base64_decode( $image_parts[ 1 ] ); if ( !@file_put_contents( $pathFilename, $image_base64 ) ) { return; } return $val_fileName; }
ดูวันสิ้นสุดของเดือนด้วย PHP
ดูวันที่สิ้นสุดของเดือนนี้
$lastDayThisMonth = date("Y-m-t"); แสดงผลลัพท์ echo $lastDayThisMonth; //ouoput: 2021-04-30จากเดือนที่กำหนดเอง
$dateString = '2014-02-04'; $lastDateOfMonth = date("Y-m-t", strtotime($dateString)); echo $lastDateOfMonth;จาก DateTime object
กำหนด DateTime object ตามต้องการ $date = new DateTime('2012-02-01'); แสดงผลพร้อมฟอร์แมตข้อมูล echo $date->format('Y-m-t');
การรับชื่อไฟล์จาก URL ที่ระบุด้วย PHP
$url = "https://www.google.com/search/photo.jpg?client=firefox-b-d&q=javascript+prop"; $filename = getFilename( $url ); echo $filename; //output photo.jpg function getFilename( $pathFilename="" ){ $pathFilename = trim($pathFilename); if($pathFilename=="")return; if(preg_match( "/http/i", $pathFilename)) { $arrFilename = parse_url($pathFilename); $pathFilename = basename( $arrFilename["path"] ); } return $pathFilename; }//func
เรียง Array หลายมิติจากค่าที่กำหนด (sort by array associative) ด้วย PHP
//วิธีใช้: เรียง Array ด้วย ID ที่น้อยกว่าจะเรียงก่อน $inventory = arraySortAssoc( $inventory, "id" ); print_r( $inventory ); $inventory = array( array( 'id' => 4767, 'first_name' => 'Woot', 'last_name' => 'GM', ), array( 'id' => 3809, 'first_name' => 'Boo', 'last_name' => 'Baan', ) ); /** * เรียง Array หลายมิติ โดยระบุชื่อคอลัมท์และการเรียงจากน้อยหรือมาก * array arraySortAssoc( $array, "asc" or "desc" ); */ function arraySortAssoc( $array = "", $colSort, $typeSort = "asc" ) { if ( $array == "" ) return; $val_typeSort = SORT_ASC; if ( $typeSort = "desc" ) { $val_typeSort = SORT_DESC; } $arrColSort = array_column( $array, $colSort ); array_multisort( $arrColSort, $val_typeSort, $array ); return $array; }
PHP ลบแท็ก Style ออกจากแท็ก HTML
return preg_replace( '/style=\\"[^\\"]*\\"/', '', $htmDecode );
PHP ลบค่าว่างออกจาก Array ด้วย array_filter
$array = array_filter($array, "onlyFilterValue"); function onlyFilterValue($value) { return ($value != "") ? TRUE : FALSE; }
PHP แทนที่หลายช่องว่างด้วยช่องว่างเดียว เช่นตัวอักษรถูกเคาะให้ให้ห่างกันมาก เราต้องการให้ห่างกันแค่เคาะเดียว
preg_replace('!\s+!', ' ', $input);
ตัวอยางการใช้ทำ Friendly Title
function friendlyTitle( $txtTitle = "" ) { if ( $txtTitle == "" ) return; $txtTitle = strtolower( $txtTitle ); $txtTitle = preg_replace( '!\s+!', ' ', $txtTitle ); $txtTitle = str_replace( array( ' ', ' ' ), '-', $txtTitle ); $txtTitle = str_replace( '&', "-and-", $txtTitle ); return $txtTitle; }
PHP สร้างโฟลเดอร์ ใช้ได้กับระบบ Linux และ Windows
//Create Folder
$pathFolder = "../../../FolderMain"; // จะให้สร้างโฟลเดอร์ไว้ที่ไหน $folderName = "[ชื่อโฟลเดอร์ที่ต้องการ]"; $folderNameWithPath = "{$pathFolder}/{$folderName}"; // ตรวจสอบว่ามีอยู่หรือเปล่า if ( !file_exists( $folderNameWithPath ) ) { if ( !mkdir( $folderNameWithPath, 0777, true ) ) { echo '{"Status":false,"Msg":"Folder not permission for write"}'; die; } }
PHP แสดง IP Address ที่ได้รับจาก ISP
// Function to get the client IP address function get_client_ip() { $ipaddress = ''; if (isset($_SERVER['HTTP_CLIENT_IP'])) $ipaddress = $_SERVER['HTTP_CLIENT_IP']; else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_X_FORWARDED'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED']; else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_FORWARDED'])) $ipaddress = $_SERVER['HTTP_FORWARDED']; else if(isset($_SERVER['REMOTE_ADDR'])) $ipaddress = $_SERVER['REMOTE_ADDR']; else $ipaddress = 'UNKNOWN'; return $ipaddress; }
PHP ลบสระภาษาไทยออกจากอีเมล์ ผู้ใช้พิมพ์ข้อความบนมือถือมักพิมพ์ผิดบ่อย
var $thaiChar = array( 'ี', 'ื', 'ั', '์', 'ิ', '่', '้' );
function cleanGarbageChar( $text ) {
if ( $text == "" ) return;
$arrCharTH = $this->thaiChar;return str_replace( $arrCharTH, '', $text );
}
PHP Escape Double and Single เปลี่ยนเครื่องหมายคำพูด Sigle Quote (') และ Double Quote (") เป็นรหัส HTML
function EscapeDoubleAndSingle( $string ) {
//ก่อนใช้ให้ลบช่องว่างออก
$searchReplaceArray = array(
'"' => '& quot;',
"'" => '& #039;'
);
$string = str_replace(
array_keys( $searchReplaceArray ),
array_values( $searchReplaceArray ),
$string
);
return $string;
}
PHP ให้ภาษาไทยรองรับ UTF-8 และ TIS-620
นำรหัสที่ได้ไปวางใน HTML เมื่อนำลิงค์ไปแชร์จะแสดงภาษาไทยได้ทั้ง Facebook และ Twitter
$text = "ภาษาไทย";
echo setThaiISO( $text );
//ISO-8859-1 (ก่อนใช้โปรดลบช่องว่างออก &_# ) function setThaiISO( $text ) { $search = array('ๅ', 'ภ', 'ถ', 'ุ', 'ึ', 'ค', 'ต', 'จ', 'ข', 'ช', 'ฃ', 'ๆ', 'ไ', 'ำ', 'พ', 'ะ', 'ั', 'ี', 'ร', 'น', 'ย', 'บ', 'ล', 'ฟ', 'ห', 'ก', 'ด', 'เ', '้', '่', 'า', 'ส', 'ว', 'ง', 'ผ', 'ป', 'แ', 'อ', 'ิ', 'ื', 'ท', 'ม', 'ใ', 'ฝ', '๑', '๒', '๓', '๔', '๕', '๖', '๗', '๘', '๙', 'ฅ', '๐', '"', 'ฎ', 'ฑ', 'ธ', 'ํ', '๊', 'ณ', 'ฯ', 'ญ', 'ฐ', 'ฤ', 'ฆ', 'ฏ', 'โ', 'ฌ', '็', '๋', 'ษ', 'ศ', 'ซ', 'ฉ', 'ฮ', 'ฺ', '์', 'ฒ', 'ฬ', 'ฦ'); $replace = array('& #3653;', '& #3616;', '& #3606;', '& #3640;', '& #3638;', '& #3588;', '& #3605;', '& #3592;', '& #3586;', '& #3594;', '& #3587;', '& #3654;', '& #3652;', '& #3635;', '& #3614;', '& #3632;', '& #3633;', '& #3637;', '& #3619;', '& #3609;', '& #3618;', '& #3610;', '& #3621;', '& #3615;', '& #3627;', '& #3585;', '& #3604;', '& #3648;', '& #3657;', '& #3656;', '& #3634;', '& #3626;', '& #3623;', '& #3591;', '& #3612;', '& #3611;', '& #3649;', '& #3629;', '& #3636;', '& #3639;', '& #3607;', '& #3617;', '& #3651;', '& #3613;', '& #3665;', '& #3666;', '& #3667;', '& #3668;', '& #3647;', '& #3669;', '& #3670;', '& #3671;', '& #3672;', '& #3673;', '& #3589;', '& #3664;', '& #3598;', '& #3601;', '& #3608;', '& #3661;', '& #3658;', '& #3603;', '& #3631;', '& #3597;', '& #3600;', '& #3620;', '& #3590;', '& #3599;', '& #3650;', '& #3596;', '& #3655;', '& #3659;', '& #3625;', '& #3624;', '& #3595;', '& #3593;', '& #3630;', '& #3642;', '& #3660;', '& #3602;', '& #3628;', '& #3622;'); return str_replace($search, $replace, $text); }
PHP หาค่าระหว่าง 2 วัน ห่างกันกี่วัน
วิธีใช้:
$curDate = date( "Y-m-d" );
echo dateDifference( "2020-10-29", $curDate ); // จะได้ 1 วัน
function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' )
{
$datetime1 = date_create($date_1);
$datetime2 = date_create($date_2);
$interval = date_diff($datetime1, $datetime2);
return $interval->format($differenceFormat);
}
PHP SQL Escape Single Qoute (') ป้องกัน SQL Injection
แนะนำให้ใช้ก่อนเพิ่มหรือ Query ข้อมูลฐานข้อมูล SQL Server
function mssql_escape($str)
{
return str_replace("'", "''", $str);
}
PHP สุ่ม Array แบบกำหนด Key พร้อม Value
วิธีใช้:
$colors = array("color1" => "Red", "color2" => "Green", "color3" => "Yellow"); print_r(shuffle_assoc($colors)); function shuffle_assoc($my_array) { $keys = array_keys($my_array); shuffle($keys); foreach ($keys as $key) { $new[$key] = $my_array[$key]; } $my_array = $new; return $my_array; }
PHP การสร้างชื่อไฟล์แบบไม่ซ้ำ มีประโยชน์ตอนตั้งชื่อเพื่อบันทึกรูปภาพครั้งละมาก ๆ
$numUID = uniqid(); // Gen 13 ตัวอักษรแบบไม่ซ้ำ เช่น 5fb9aa38e935b
$numUID = getUID6Digit( $numUID ); // ลดให้เหลือ 6 ตัวอักษร
//ชื่อไฟล์ที่ได้จะไม่มีทางซ้ำกัน
$fileName = "{$today}_{$numUID}";
function getUID6Digit( $numUID="" ) {
if( $numUID=="" )return;
return substr( $numUID, -6 );
}
วิธี PHP แปลงค่า Array จากตัวอักษรเป็นตัวเลข ( String เป็น Integer )
$arr = array("1", "2");
$arrData = array_map('intval', $arr);
OUTPUT: 1, 2
วิธีแปลงตัวอักษรภาษาจีนเป็น Unicode (Convert Chaina to Unicode)
$arr = array(
'详细内容'
);
วนลูปตามสมาชิก Array
foreach($arr as $val) {
$uText = json_encode($val);
echo str_replace('"', '', $uText)."\n";
}
แปลง Unicode กลับมาเป็นตัวอักษรภาษาจีนเหมือนเดิม
$unicodeChar = '\u516c\u5bd3';
echo json_decode('"'.$unicodeChar.'"');
PHP จำกัดข้อความ 80 ตัวอักษร สำหรับ Google SEO (ส่วนใหญ่จะใส่ Page Title)
วิธีใช้:
แบบแรก: กำหนดจำนวนตัวอักษรได้
1. strTrim([ข้อความ], [จำนวนตัวอักษรที่ต้องการ: 88] );
แบบสอง: หากไม่ระบบจำนวนตัวอักษร ฟังค์ชั่นจะตัดเหลือ 55 ตัวอักษร (ตามค่า default ที่กำหนด)
2. strTrim([ข้อความ]);
function strTrim( $text="", $limit="" ) { //กำหนดเองได้
if( trim($text) == "" )return;
$chrLimit = ( intval($limit) )? $limit : 55 ;
$text = trim( $text );
if( mb_strlen( $text, 'UTF-8' ) > $chrLimit ) {
$text = mb_substr( $text, 0, $chrLimit, 'UTF-8' );
}return $text;
}
ดาวโหลด Content จาก URL
function curl_download($Url){ // is cURL installed yet? if (!function_exists('curl_init')){ die('Sorry cURL is not installed!'); } // OK cool - then let's create a new cURL resource handle $ch = curl_init(); // Now set some options (most are optional) // Set URL to download curl_setopt($ch, CURLOPT_URL, $Url); // Set a referer // curl_setopt($ch, CURLOPT_REFERER, "http://www.example.org/yay.htm"); // User agent curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0"); // Include header in result? (0 = yes, 1 = no) curl_setopt($ch, CURLOPT_HEADER, 0); // Should cURL return or print out the data? (true = return, false = print) curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Timeout in seconds curl_setopt($ch, CURLOPT_TIMEOUT, 10); // Download the given URL, and return output $output = curl_exec($ch); // Close the cURL resource, and free system resources curl_close($ch); return $output; }
PHP ดาวโหลด PDF จาก URL
// Initialize a file URL to the variable $urlInput = 'http://www.guimee.com/example.pdf'; $newFilename = basename($urlInput); $folName = "pdf"; $fileOutput = "{$folName}//{$newFilename}"; $ch = curl_init($urlInput); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_REFERER, $urlInput); $data = curl_exec($ch); curl_close($ch); $result = file_put_contents($fileOutput, $data); if ($result) { echo json_encode([ "Status" => true , "Msg" => "Success", ]);die; } else { echo json_encode([ "Status" => false , "Msg" => "Permission is deny", ]);die; }
PHP ตรวจลิงค์รูปภาพยังมีอยู่หรือไม่ หากรูปยังมีอยู่จะคืนค่าพาร์ทรูป หรือหากรูปถูกลบแล้วจะคืนค่าว่าง
//return space, if not existed
function checkHeader404( $urlImage="" ) {
if($urlImage=="")return;
// to be checked
$url = trim($urlImage);
// Getting page header data
$array = @get_headers($url);
// that is only what we need to check
$string = $array[0];
// 404 for error, 200 for no error
return (strpos($string, "200"))? $urlImage : "";
}//func$urlImage = "https://www.guimme.com/images/2020232220.jpg";
echo checkHeader404($urlImage);
PHP เทียบระยะห่างของเวลาจากเริ่มต้นจนสิ้นสุดเป็นกี่นาที
function getNumMinut() { $to_time = strtotime("2008-12-13 10:20:00"); $from_time = strtotime("2008-12-13 10:21:00"); return round(abs($to_time - $from_time) / 60, 2); //. " minute" }
เพิ่มข้อมูลจากไฟล์นอก
include("[filename_inc.php]");
ให้ Browser แสดงข้อมูล Json
header("Content-Type: application/json; charset=UTF-8");
กระโดดไปหน้าที่ต้องการ (จำเป็นต้องมี die ต่อท้ายด้วย)
header( 'Location: http://www.yoursite.com/new_page.php' );die;
== กลุ่มของฟังค์ชั่น ==
แสดงชื่อโดเมน รับข้อมูลจาก URL
วิธีใช้:
$URL = "https://www.guimee.com/adblog/523/รวมคำสั่ง-php-ที่ใช้บ่อย/";
echo getHostnameOnly( $URL ); //จะได้ guimee
function getHostnameOnly($url) { $url = trim($url); if ($url == "") { return; } $parse = parse_url($url); $strHost = $parse['host']; if ($strHost == "") { return; } $strHost = str_replace('www.', '', $strHost); if (preg_match('/\./', $strHost)) { $arrHost = explode('.', $strHost, 2); $strHost = $arrHost[0]; } return $strHost; }
PHP แสดงวันที่จากฐานข้อมูล SQL Server (วันที่จะเป็นชนิด Object Time)
วิธีแรกใช้ DateTime Format ของ PHP
// ดึงวันที่จากฐานข้อมูล $db_DateUpdate = $objStatsLinkShare->DateUpdate; //ฟอร์แมตรูปแบบวันที่ ที่ต้องการแสดง เช่น d-m-Y (วัน เดือน ปี) หรื $strDateUpdate = $db_DateUpdate->format('d-m-Y H:i');
วิธีที่สองใช้ฟังค์ชั่นช่วยแปลง
function date_normalizer($d, $isMin=false){ if ( empty( $d ) ) return; if($d instanceof DateTime){ $objDateTime = $d->getTimestamp(); } else { $objDateTime = strtotime($d); } return ($isMin)?date('Y-m-d', $objDateTime):date('Y-m-d H:i:s', $objDateTime); }การแปลงเวลาจาก time object เป็น string
function time_normalizer( $d, $isMini = false ) { if ( empty( $d ) ) return; if ( $d instanceof DateTime ) { $objDateTime = $d->getTimestamp(); } else { $objDateTime = strtotime( $d ); } return ( !$isMini ) ? date( 'H:i:s', $objDateTime ) : date( 'H:i', $objDateTime ); }