סניפטים של PHP

  • תווים ומילים
  • פונקציות Css
  • מידע משתמש
  • תאריכים
  • סקרייפינג ומידע מרוחק
  • מיקומים והפניות
  • פונקציות אבטחה
  • מידע שרת
  • תמונות וגרפיקות
  • מערכים (array)
  • שונות

תווים ומילים

+ ספירת תווים בעזרת PHP

תיאור:

פונקציה מעולה ופשוטה מאוד לשימוש אשר עושה שימוש בפקודה mb_strlen כדי לספור תווים של מחרוזת טקסט כלשהו בצורה מדויקת ואפילו מחרוזת טקסט בעברית... * הנה כלי אשר עושה שימוש בפונקציה זאת: כלי לספירת מילים

first קוד:

  • מה: סניפט שמאפשר לספור תווים בקלות
  • איפה:
function count_string_chars($string) {
	$charsCount = mb_strlen($string);
	return $charsCount;
}

second קוד:

  • מה: הדגמה של שימוש בפונקציה
  • איפה:
$string = "אני מוצא סניפטים שימושיים באתר שגיב SEO!"

// יחזיר את המספר 70
echo count_words($string);
ספירת תווים בעזרת PHP
+ ספירת מילים בעזרת PHP

תיאור:

פונקציה קטנה ושימושית שמאפשרת לספור את כמות המילים במחרוזת טקסט כלשהיא בצורה קלה ומהירה! הסניפט משתמש ברגקס כדי לספור את התווים ולכן עובד גם בשפה העברית בצורה מדויקת מאוד! * הנה כלי אשר משתמש בפונקציה זאת: כלי לספירת מילים

first קוד:

  • מה: סניפט שמאפשר לספור מילים בקלות
  • איפה: או בקובץ מצורף או ישירות בדף בו אתם רוצים לספור
<?php
function count_words($string) {
	$wordsCount = count(preg_split('~&#91;^\p{L}\p{N}\'&#93;+~u',$string));
	return $wordsCount;
}
?>

second קוד:

  • מה: הדגמה של שימוש בפונקציה
  • איפה:
$string = "אני מוצא סניפטים שימושיים באתר שגיב SEO!"

// יחזיר את המספר 7
echo count_words($string);
ספירת מילים בעזרת PHP

פונקציות Css

+ ריווח עם PHP

תיאור:

עוד פונקציה שימושית עם PHP שעוזרת לנו לחסוך בCSS מיותר וליצור ריווח (Margin) אשר מותאם בדיוק לצרכים שלנו בשורה אחת ובצורה מהירה עבור משתנה מכל סוג.

first קוד:

  • מה: פקודה דינמית ליצירת MARGIN
  • איפה: בקובץ שמכיל את הפונקציות
function margin($direction, $value) {
	if($direction) {
		echo 'margin-'.$direction.':'.$value;
	}
	else {
		echo 'margin:'.$value;
	}
}

second קוד:

  • מה: הדגמה של שימוש
  • איפה: ישירות במקום בו רוצים להציג את המידע
// ריווח לימין בפיקסלים
<div style="<?php margin('right', '20px'); ?>">ריווח לימין הדגמה</div>

// ריווח לכל הכיוונים עם אחוזים
<div style="<?php margin('', '5%'); ?>">ריווח לכל הכיוונים</div>
ריווח עם PHP
+ רוחב גמיש

תיאור:

אם אתם רוצים לחסוך המון המון שורות CSS מיותרות כדי להגדיר רוחב במקרים בהם יש לכם רוחבים שונים של אלמנטים ברחבי האתר אז הפונקציה הזאת בדיוק בשבילכם. בעזרת פונקציה זאת תוכלו להגדיר רוחב גמיש בצורה זורמת וטבעית.

first קוד:

  • מה: קביעת רוחב של אלמנט עם PHP
  • איפה: בדף עצמו או בקובץ אותו כוללים בדף המסוים.
function width($value) {
	$wid = 'width: '.$value;
	echo $wid;
}

second קוד:

  • מה: הדגמה של שימוש
  • איפה: ישירות במקום בו רוצים להציג את המידע
<div style="<?php  width('30%'); ?>">
הדגמה
</div>
רוחב גמיש

מידע משתמש

+ זיהוי ��ולש מסלולרי

תיאור:

הפונקציה הבאה משתמשת במידע המובנה בדפדפן של הגולש כדי לזהות אם הגולש מגיע אל האתר שלכם ממכשיר סלולרי, אייפד או אפילו אייפוד ומחזירה את סוג הסלולרי. בצורה כזאת אתם יכולים להתאים את הסטייל והתצורה של האתר שלכם לצפייה בסלולרי המתאים.

first קוד:

  • מה: פונקציה שעוזרת זיהוי של גולש בסלולרי
  • איפה: בדף עצמו או בקובץ מצורף
<?php
function is_cellphone() {
	$iphone		= (bool) strpos($_SERVER&#91;'HTTP_USER_AGENT'&#93;, 'iPhone');
	$iPod		= (bool) strpos($_SERVER&#91;'HTTP_USER_AGENT'&#93;, 'iPod');
	$iPad		= (bool) strpos($_SERVER&#91;'HTTP_USER_AGENT'&#93;, 'iPad');
	$Android	= (bool) strpos($_SERVER&#91;'HTTP_USER_AGENT'&#93;, 'Android');
	$webOS		= (bool) strpos($_SERVER&#91;'HTTP_USER_AGENT'&#93;, 'webOS');
	$BlackBerry = (bool) strpos($_SERVER&#91;'HTTP_USER_AGENT'&#93;, 'BlackBerry');
	
	if($iphone) { return 'iphone detected';}
	elseif($iPod) { return 'iPod detected';}
	elseif($iPad) { return 'iPad detected';}
	elseif($Android) { return 'Android detected';}
	elseif($webOS) { return 'webOS detected';}
	elseif($BlackBerry) { return 'BlackBerry detected';}
	else { // No Cell Phone! }
}
?>

second קוד:

  • מה: הדגמה של שימוש בפונקציה
  • איפה:
<?php
$whatCellphone = is_cellphone();
if($whatCellphone == 'iphone') {
// אם אייפון - טען קובץ סטייל מסוים
<link rel="stylesheet" type="text/css" href="iphone-style.css" media="all" />
}
?>
זיהוי גולש מסלולרי

תאריכים

+ הבדל בין שני תאריכים בPHP

תיאור:

הפונקציה הבאה היא פונקציה שימושית ביותר שעשיתי לה קצת התאמה כדי לשרת את המטרות שלי. מה שהיא עושה למעשה הוא להחזיר את ההבדל בין שני תאריכים שונים ומחזירה את הפרמטר שאתם צריכים כלומר שנים, ימים, או חודשים. הפונקציה קצת מתחכמת אז שימו לב ובהצלחה.

first קוד:

  • מה: ההבדל בין שני תאריכים
  • איפה: בדף עצמו או בקובץ מצורף
<?php
function calc_date_diff($date1, $date2, $type){

	// post date: $date1
	// current date: $date2
	// ${$type} = days OR months OR years

	$diff = abs(strtotime($date2) - strtotime($date1));

	$years = floor($diff / (365*60*60*24));
	$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
	$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
	
	return ${$type};
}
?>

second קוד:

  • מה: הדגמה של שימוש בפונקציה
  • איפה: בקובץ ובמיקום בו אתם רוצים להציג את המידע
<?php
$date1 = '2012-12-01';
$date2 = '2012-12-24';
$type = 'days'; // בחרו את המשתנה הרצוי

$daysDifference		= calc_date_diff($chequeFixesDate, $currentDate, 'days');
?>
הבדל בין שני תאריכים בPHP

סקרייפינג ומידע מרוחק

+ ספירת לייקים של אתר

תיאור:

פונקציה קטנה ושימושית בעזרתה ניתן להחזיר את כמות הלייקים של דומיין מסוים אבל לא רק. המידע המוחזר מאפשר לנו לקבל את כמות הלייקים, כמות השיתופים וכמות התגובות אשר כוללות אזכור של כתובת האתר המדובר.

first קוד:

  • מה: פונקציה שקוראת למידע
  • איפה: בקובץ אותו יש לכלול לקובץ בו רוצים להציג את המידע
function fbdata($url) {
	
	// QUERY FACEBOOK
	$query = "select total_count,like_count,comment_count,share_count,click_count from link_stat where url='{$url}'";
	$call = "https://api.facebook.com/method/fql.query?query=" . rawurlencode($query) . "&format=json";

	// CURL THE RESULT
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $call);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	$output = curl_exec($ch);
	curl_close($ch);
	return json_decode($output);
}

second קוד:

  • מה: הדגמה של שימוש
  • איפה: ישירות במקום בו רוצים להציג את המידע
<?php
// להציג את כמות הלייקים
$fbdata = reset(get_fb_likes($singleUrl));
$fbdata->like_count;

// להציג את כמות השיתופים
$fbdata = reset(get_fb_likes($singleUrl));
$fbdata->share_count;

// להציג את כמות התגובות
$fbdata = reset(get_fb_likes($singleUrl));
$fbdata->comment_count;
?>
ספירת לייקים של אתר
+ מציאת כל הקישורים בדף מרוחק

תיאור:

הסניפט הבא מאפשר לעשות בדיקה מהירה של דף / אתר מרוחק ולהחזיר מאותו URL קצה את כל הקישורים היוצאים בדף. סניפט מעניין מאוד איתו ניתן בעזרת שילוב של קוד נלווה ליצור כלי שבודק קישורים יוצאים ואפילו בודק אם אותם קישורים תקינים או שהם מובילים לדף שאיננו קיים.

first קוד:

  • מה: סניפט שמחזיר את כל הקישורים בדף מרוחק
  • איפה:
<?php
$html = file_get_contents('https://www.example.com');
 
$dom = new DOMDocument();
@$dom->loadHTML($html);
 
// תפוס את כל תגי הקישור בתוכן שחזר
$xpath 		= new DOMXPath($dom);
$databox 	= $xpath->evaluate("/html/body//a");

// המר לרשימת URL'ים
echo '<ul>';
	for ($i = 0; $i < $databox->length; $i++) {
		   $href	= $databox->item($i);
		   $outurl	= $href->getAttribute('href');
		   
		   echo '<li>'.$outurl.'</li>';
	}
echo '</ul>';
?>
מציאת כל הקישורים בדף מרוחק

מיקומים והפניות

+ הפניה לעמוד רצוי עם PHP

תיאור:

סניפט קצר ושימושי שניתן לשדרג למטרות שלכם אשר מבצע הפניה למיקום רצוי. ניתן לטעון את הפונקציה פעם אחת ואז לקרוא לי ברחבי האתר שלכם ואפילו להשתמש בהפניות במקרים כמו לדוגמה גולש שאיננו מחובר מופנה לדף אחר.

first קוד:

  • מה: פונקציה שעושה הפניה לדף אחר
  • איפה: בדף עצמו או בקובץ מצורף
function redirect_to($newlocation) {
	if ($newlocation !=NULL) {
		header("Location: {$newlocation}");
		exit;
	}
}

second קוד:

  • מה: הדגמה של שימוש בפונקציה
  • איפה:
<?php
$newlocation= 'example.php';
redirect_to($newlocation);
?>
הפניה לעמוד רצוי עם PHP
+ המיקום של הקובץ הנוכחי

תיאור:

פונקציה שימושית לבוני אתרים ובמיוחד בשלב הDebuggin אשר מחזירה את המסלול / התיקייה של הקובץ בו אתם צופים. הנה פונקציה דומה בוורדפרס שלא תגידו שהזנחנו אתכם!

first קוד:

  • מה: פונקציה שמחזיר את מיקום הקובץ בו אתם צופים
  • איפה: או בקובץ מצורף או ישירות בדף בו אתם רוצים לבדוק
<?php
function current_file_path() {
	// check if we are dealing with HTTPS server or HTTP
	$url = (isset($_SERVER&#91;'HTTPS'&#93;) && $_SERVER&#91;'HTTPS'&#93; == 'on') ? 'https://' : 'https://';
	$url .= $_SERVER&#91;'HTTP_HOST'&#93; . dirname($_SERVER&#91;'PHP_SELF'&#93;);
	
	// Convert Windows (/ to \) root to server root
	$url = str_replace('\\', '/', $url);
	if (strlen($url) != strrpos($url, '/') +1) {$url .= '/';}
	return $url;
}
?>

second קוד:

  • מה: הדגמה של שימוש בפונקציה
  • איפה: ישירות בדף בו אתם רוצים לבדוק
<?php
echo current_file_path();
?>
המיקום של הקובץ הנוכחי

פונקציות אבטחה

+ ניקוי קלט משדה בטופס כהגנה מ-SQL Injection

תיאור:

פונקציה קטנה ויעילה שהיא חלק ממערך הגנה על טפסי שאתם מציבים ברחבי האתר. פונקציה זאת בודקת אם get_magic_quotes_gpc פעיל בשרת שלכם. אם כן get_magic_quotes_gpc שם את התו \ לפני תווים בעייתים. אם פונקציה זאת לא פעילה ובכל מקרה הפונקציה תריץ גם את הפקודה mysql_real_escape_string אשר שמה תו \ לפני תווים מסוימים כמו לדוגמה x00

first קוד:

  • מה: פונקציה למניעת SQL Injection
  • איפה: ישירות בדף או בקובץ functions מצורף
<?php
function cleaninput($original){
	if (get_magic_quotes_gpc()) {
		$clean = mysql_real_escape_string(stripslashes($original));	 
	}else{
		$clean = mysql_real_escape_string($original);	
	} 
	return $clean;
}
?>

second קוד:

  • מה: הדגמה של שימוש בפונקציה
  • איפה: בקובץ בו אתם קולטים ערכים מטופס
$somevar = $_POST['somevar'] // קולטים משתנה מהטופס לדוגמה

// מנקים את אותו משתנה
$clean_somevar = cleaninput($somevar)
ניקוי קלט משדה בטופס כהגנה מ-SQL Injection

מידע שרת

+ שטח אחסון בשימוש / פנוי על השרת שלכם

תיאור:

פונקציה נחמדה מאוד שעוזרת לכם לדעת כמה עמוס השרת עליו אתם מאחסנים את האתר שלכם ומחזירה ארבעה פרמטרים והם כך כמות שטח האחסון שיש לשרת שלכם, כמה מאותו שטח בשימוש וכמה פנוי באחוזים.

first קוד:

  • מה: מודד נפח זכרון / שטח אחסון על השרת שלכם
  • איפה: בדף עצמו או בקובץ מצורף
<?php
class serverInfo{ 
	function Dbyte($Wert){ 
	  
	if ($Wert >= 1099511627776)	{ 
		$Wert = round($Wert / 1099511627776, 1) . " TB"; 
	} elseif ($Wert >= 1073741824) { 
		$Wert = round($Wert / 1073741824, 1) . " GB"; 
	} elseif ($Wert >= 1048576) { 
		$Wert = round($Wert / 1048576, 1) . " MB"; 
	} elseif ($Wert >= 1024) { 
		$Wert = round($Wert / 1024, 1) . " kB"; 
	} 
	else { 
		$Wert = round($Wert, 0) . " Bytes"; 
	} 

	return $Wert; 
	}  
	function Memory(){ 
			$mem = file_get_contents("/proc/meminfo"); 
			if (preg_match('/MemTotal\:\s+(\d+) kB/', $mem, $matches)) 
			{ 
				$total = $matches[1]; 
			} 
			unset($matches); 
			if (preg_match('/MemFree\:\s+(\d+) kB/', $mem, $matches)) 
			{ 
				$free = $matches[1]; 
			} 
			$free; 
			$total; 
			$usage = $total - $free; 
			$precent = 100 * $usage / $total; 
			return array( 
			"total" => $this->Dbyte($total*1024), 
			"free" => $this->Dbyte($free*1024), 
			"usage" => $this->Dbyte($usage*1024), 
			"precent" => round($precent,1), 
			); 
    } 
}
?>

second קוד:

  • מה: הדגמה של שימוש בפונקציה
  • איפה: בקובץ ובמיקום בו אתם רוצים להציג את המידע
// USAGE
$object 		=	new serverInfo();
$serverMemory	=	$object->Memory();

// GET ELEMENTS
echo '
	<ul>
		<li>סהכ זכרון: '.$serverMemory[total].'</li>
		<li>זכרון לא בשימוש: '.$serverMemory[free].'</li>
		<li>זכרון בשימוש: '.$serverMemory[usage].'</li>
		<li>זכרון חופשי באחוזים: '.$serverMemory[precent].'%</li>
	</ul>
';
שטח אחסון בשימוש / פנוי על השרת שלכם
+ מחזיר את הCPU של השרת

תיאור:

פונקציה קצרה שמחזירה את הגרסה של הCPU של השרת. פשוט להכניס ולקבל את המידע (ריגול אחר השרת שלכם פונקציה ראשונה בסדרה)

first קוד:

  • מה: מחזיר את גרסת המעבד של השרת
  • איפה: במיקום שאתם רוצים להציג את זה
<?php
function cpu_ver(){ 
	$load = sys_getloadavg(); 
	return round($load&#91;0&#93;, 1); 
} 
?>

second קוד:

  • מה: הדגמה של שימוש בפונקציה
  • איפה:
<?php
echo cpu_ver();
?>
מחזיר את הCPU של השרת
+ בודקים אם Curl מותקן על השרת שלנו

תיאור:

בדומה לפונקציות רבות אשר אנו מכלילים באוסף הסניפטים של PHP גם הפונקציה הבאה משרתת מקרה יחיד וייחודי ודי נדיר בו אנו רוצים לוודא / לבדוק אם יש לנו Curl על השרת שלנו כמו לדוגמה שנרצה לעשות אם יש לנו שרת PHP או אחסון חינמי איפשהו. הפונקציה עושה פעולה פשוטה והיא לבדוק אם הפונקציה אשר אחראית על Curl קיימת ומחזירה לנו תשובה כתגובה - קיים או לא קיים. פשוט ומהיר!

first קוד:

  • מה: אם Curl מותקן
  • איפה: בקובץ בו אנו רוצים לראות את התגובה
	function check_ifcurl_installed() {
		if(in_array  ('curl', get_loaded_extensions())) {
			return 'IT WORKS';
		} else {
			return 'IT DOESNT';
		}
	}	
	
	echo check_ifcurl_installed();
בודקים אם Curl מותקן על השרת שלנו

תמונות וגרפיקות

+ שינוי גודל תמונה בצורה דינמית

תיאור:

סניפט פשוט מאוד ולא חכם כל כך אבל שימושי שמאפשר לשנות את הגודל של תמונה נבחרת בצורה מהירה וקלה ובעזרת פונקציה קטנה מאוד וקלה לשליטה.

first קוד:

  • מה: שינוי גודל תמונה באחוזים
  • איפה: במיקום שאתם רוצים להציג את התמונה
<?php
header('Content-type: image/jpeg');

// כאן שולטים במסלול התמונה
$imgfile = 'https://sagive.co.il/tools/image-colors-scraper/img/sagive-seo-300x300-001.jpg';

// כאן שולטים בגודל התמונה באחוזים -> 0.7 = 70 אחוז
$percent = 0.7;

list($width, $height) = getimagesize($imgfile);
$newwidth = $width * $percent;
$newheight = $height * $percent;
 
$thumb = ImageCreateTrueColor($newwidth,$newheight);
$source = imagecreatefromjpeg($imgfile);
 
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
 
imagejpeg($thumb);
?>
שינוי גודל תמונה בצורה דינמית
+ מידות תמונה מרוחקת

תיאור:

פונקציה מובנית בPHP אשר מאפשרת לקבל את המידות של תמונה מרוחקת בקלות ובשורה אחת!

first קוד:

  • מה: קבלת מידות של תמונה מרוחקת
  • איפה: ישירות במקום בו אתם רוצים להציג את המידות
<?php
$imageData = getimagesize($imgUrl);
?>

second קוד:

<?php
	echo 'רוחב'. $imageData&#91;0&#93;;
	echo 'גובה'. $imageData&#91;1&#93;;
	echo 'סוג'. $imageData&#91;'mime'&#93;;
?>
מידות תמונה מרוחקת

מערכים (array)

+ ניקוי רווחים בתוך ערכים בArray

תיאור:

הסניפט הבא עושה פעולה פשוטה מאוד אבל שימושית בהחלט בכמה פרויקטים שבנינו. מה שהוא עושה זה לנקות את נערכים עצמם בתוך מערך מרווח בתחילת הערך ובסוף הערך. בשפת PHP קוראים לזה TRIM ואנו מחילים אופציה זאת על כל הערכים בArray.

first קוד:

  • מה: ניקוי רווחים במערך
  • איפה: ישירות בקובץ הרצוי או בקובץ שאתם מכלילים אליו
function cln_empty_keys($array) {
	$array = array_filter($array, create_function('$a','return trim($a)!=="";'));
	$array = array_map('trim', $array);
	return $array;
}
ניקוי רווחים בתוך ערכים בArray
+ החזרת ערך רנדומלי ממערך (array)

תיאור:

הסניפט הבא הוא הדגמה של החזרת ערך רנדומלי מתוך מערך (array) - קל ומהיר ויעיל פעמים רבות. אני עשיתי שימוש רב בצורה זאת החזרת ערך רנדומלי כדי להציג מידע מעניין לגולשים או לאפליקציות שונות ומגוונות.

first קוד:

  • מה: ערך רנדומלי מתוך Array
  • איפה: היכן שתרצו להציג את המידע או בקובץ מצורף
<?php
	$example_array= array(
		'example value 01',
		'example value 02',
		'example value 03',
		'example value 04',
		'example value 05',
		'example value 06',
		'example value 07',
	);
	
	$k = array_rand($example_array);
	$v = $example_array&#91;$k&#93;;
	
	echo $v;
?>
החזרת ערך רנדומלי ממערך (array)

שונות

+ הצגת כל הקבצים בתוך תיקייה

תיאור:

בדוגמה הבאה אני מראה איך להציג את כל התמונות בתוך תיקייה במחשב שלכם בעזרת PHP... אני משתמש בדוגמה זאת באופן אישי כדי לעשות לתמונות של אתר מסוים אופטימיזציה בעזרת PageSpeed אבל אפשר כמובן להמיר לכל מטרה.

first קוד:

	<?php
        // זכרו לשנות את המסלול images-resizer/ למסלול של התיקייה הרצויה
	$images	= array_diff(scandir('images-resizer/'), array('..', '.'));
	foreach($images as $image) {
		
		echo '
			<div class="m3 fleft">
				<img src="images-resizer/'.$image .'" />
			</div>
		';
	}
	?>
הצגת כל הקבצים בתוך תיקייה
+ בדיקת גרסת הPHP שמותקנת על השרת שלכם

תיאור:

פקודה פשוטה מאוד אשר מובנית בPHP ואיננה סניפט כלל אלא כאן רק להתייחסות (אוהב הכל באותו עמוד). פקודה זאת מחזירה את הגרסה של הPHP אשר מותקנת על השרת שלכם.

first קוד:

  • מה: גרסת הPHP שלכם
  • איפה: במיקום בו תרצו להציג את המידע
<?php
// example: 'Current PHP version: 5.0'
echo 'Current PHP version: ' . phpversion();
?>
בדיקת גרסת הPHP שמותקנת על השרת שלכם
אפשרויות נגישות

נגישות

  • זום מסך - +
  • גודל טקסט - +
  • נטרול צבעים הפעל
  • ניגוד צבעים גבוה הפעל
  • הדגשת קישורים הפעל