Статьи

10 жизненно важных фрагментов PHP

Чтобы быть эффективным, у веб-разработчика должен быть набор инструментов с фрагментами кода, которые он может использовать и использовать повторно при необходимости. В этой статье я собираюсь показать вам 10 чрезвычайно полезных фрагментов PHP-кода, которые можно добавить в набор инструментов веб-разработчика.

Выделите конкретные слова в фразе

Иногда, например, при отображении результатов поиска, это хорошая идея, чтобы выделить конкретные слова. Это именно то, что может сделать следующая функция:

function highlight($sString, $aWords) {
	if (!is_array ($aWords) || empty ($aWords) || !is_string ($sString)) {
		return false;
	}

	$sWords = implode ('|', $aWords);
 	return preg_replace ('@\b('.$sWords.')\b@si', '<strong style="background-color:yellow">$1</strong>', $sString);
}

Источник: http://www.phpsnippets.info/highlights-words-in-a-phrase

Получите ваших средних подписчиков Feedburner

В последнее время у Feedburner было много проблем, и трудно сказать, что предоставленная информация все еще актуальна. Этот код захватит количество ваших подписчиков за последние 7 дней и вернет среднее значение.

Получите ваших средних подписчиков Feedburner

В последнее время у Feedburner было много проблем, и трудно сказать, что предоставленная информация все еще актуальна. Этот код захватит количество ваших подписчиков за последние 7 дней и вернет среднее значение.

function get_average_readers($feed_id,$interval = 7){
	$today = date('Y-m-d', strtotime("now"));
	$ago = date('Y-m-d', strtotime("-".$interval." days"));
	$feed_url="https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=".$feed_id."&dates=".$ago.",".$today;
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_URL, $feed_url);
	$data = curl_exec($ch);
	curl_close($ch);
	$xml = new SimpleXMLElement($data);
	$fb = $xml->feed->entry['circulation'];

	$nb = 0;
	foreach($xml->feed->children() as $circ){
		$nb += $circ['circulation'];
	}

	return round($nb/$interval);
}

Источник: http://www.catswhoblog.com/how-to-get-a-more-relevant-feedburner-count

Автоматическое создание пароля

Хотя я лично предпочитаю, чтобы пользователи сами выбирали свой пароль, клиент недавно попросил меня автоматически создавать пароли при создании новой учетной записи.
Следующая функция является гибкой: вы можете выбрать желаемую длину и силу для пароля.

function generatePassword($length=9, $strength=0) {
	$vowels = 'aeuy';
	$consonants = 'bdghjmnpqrstvz';
	if ($strength >= 1) {
		$consonants .= 'BDGHJLMNPQRSTVWXZ';
	}
	if ($strength >= 2) {
		$vowels .= "AEUY";
	}
	if ($strength >= 4) {
		$consonants .= '23456789';
	}
	if ($strength >= 8 ) {
		$vowels .= '@#$%';
	}

	$password = '';
	$alt = time() % 2;
	for ($i = 0; $i < $length; $i++) {
		if ($alt == 1) {
			$password .= $consonants[(rand() % strlen($consonants))];
			$alt = 0;
		} else {
			$password .= $vowels[(rand() % strlen($vowels))];
			$alt = 1;
		}
	}
	return $password;
}

Источник: http://www.phpsnippets.info/generate-a-password-in-php

Сжать несколько файлов CSS

Если на вашем сайте используются разные CSS-файлы, их загрузка может занять довольно много времени. Используя PHP, вы можете сжать их в один файл без лишних пробелов или комментариев.
Этот фрагмент ранее обсуждался в моей статье « 3 способа сжатия CSS-файлов с помощью PHP ».

header('Content-type: text/css');
ob_start("compress");
function compress($buffer) {
  /* remove comments */
  $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
  /* remove tabs, spaces, newlines, etc. */
  $buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
  return $buffer;
}

/* your css files */
include('master.css');
include('typography.css');
include('grid.css');
include('print.css');
include('handheld.css');

ob_end_flush();

Источник: http://www.phpsnippets.info/compress-css-files-using-php

Получить короткие URL для Twitter

Ты в твиттере ? Если да, вы, вероятно, используете сокращение URL, такое как bit.ly или TinyUrl, чтобы поделиться своими любимыми сообщениями в блоге и ссылками в сети.
Этот фрагмент принимает URL-адрес в качестве параметра и возвращает короткий URL-адрес.

function getTinyUrl($url) {
    return file_get_contents("http://tinyurl.com/api-create.php?url=".$url);
}

Источник: http://www.phpsnippets.info/convert-url-to-tinyurl

Рассчитать возраст, используя дату рождения

Передайте дату рождения этой функции, и она вернет возраст человека; очень полезно при создании сообществ или социальных сетей.

function age($date){
	$year_diff = '';
	$time = strtotime($date);
	if(FALSE === $time){
		return '';
	}

	$date = date('Y-m-d', $time);
	list($year,$month,$day) = explode("-",$date);
	$year_diff = date("Y") – $year;
	$month_diff = date("m") – $month;
	$day_diff = date("d") – $day;
	if ($day_diff < 0 || $month_diff < 0) $year_diff–;

	return $year_diff;
}

Source: John Karry on http://www.phpsnippets.info/calculate-age-of-a-person-using-date-of-birth

Calculate execution time

For debugging purposes, it is a good thing to be able to calculate the execution time of a script. This is exactly what this piece of code can do.

//Create a variable for start time
$time_start = microtime(true);

// Place your PHP/HTML/JavaScript/CSS/Etc. Here

//Create a variable for end time
$time_end = microtime(true);
//Subtract the two times to get seconds
$time = $time_end - $time_start;

echo 'Script took '.$time.' seconds to execute';

Source: http://phpsnips.com/snippet.php?id=26

Maintenance mode with PHP

When updating your site, it is generally a good thing to temporarily redirect your users to a “Maintenance” page so they will not see any critical info such as error messages.
This is generally done using an .htaccess file, but it can be done easily with PHP:

function maintenance($mode = FALSE){
    if($mode){
        if(basename($_SERVER['SCRIPT_FILENAME']) != 'maintenance.php'){
            header("Location: http://example.com/maintenance.php");
            exit;
        }
    }else{
        if(basename($_SERVER['SCRIPT_FILENAME']) == 'maintenance.php'){
            header("Location: http://example.com/");
            exit;
        }
    }
}

Source: http://www.phpsnippets.info/easy-maintenance-mode-with-php

Prevent js and css files from being cached

By default, external files such as javascript and css are cached by the browser. If you want to prevent this from caching, simply use this easy tip:

<link href="/stylesheet.css?<?php echo time(); ?>" rel="stylesheet" type="text/css" /&glt;

The result will look like this:

<link href="/stylesheet.css?1234567890" rel="stylesheet" type="text/css" /&glt;

Source: http://davidwalsh.name/prevent-cache

Add (th, st, nd, rd, th) to the end of a number

Another useful snippet which will automatically add st, nd, rd or th after a number.

function make_ranked($rank) {
	$last = substr( $rank, -1 );
	$seclast = substr( $rank, -2, -1 );
	if( $last > 3 || $last == 0 ) $ext = 'th';
	else if( $last == 3 ) $ext = 'rd';
	else if( $last == 2 ) $ext = 'nd';
	else $ext = 'st'; 

	if( $last == 1 && $seclast == 1) $ext = 'th';
	if( $last == 2 && $seclast == 1) $ext = 'th';
	if( $last == 3 && $seclast == 1) $ext = 'th'; 

	return $rank.$ext;
}

Source: http://phpsnips.com/snippet.php?id=37