Xwab
Форумыnavigate_nextПрограммирование на PHP

Топ: Полезные Коды/Функции (см 1 пост)
Сообщения
Camry

Обработка заданной даты, в сравнении с текущей (Сегодня, Вчера, На этой неделе, в этом году, остальное)

Кому не сложно, облегчите код.))) А то я не мастер в php

[php:1:85128adadb]
function date_transform($time){ //в функцию нужно передавать дату из time()
## Суть функции в том, что перебираются разные варинты различий между текущей и заданной датой и временем
## пока функция не дойдет до нужной, и оператор return завершает функцию)

## Сегодня
if( intval(date( "d", $time)) == intval(date( "d", time() )))
// Если числа одинаковые
{ $time_text = "Сегодня в ".date( "H:i", $time); return $time_text; }


## Вчера
if( ( intval(date( "d", time() )) - intval(date( "d", $time))) == 1)
// Если текущее число, минус заданное равно одному, значит вчера
{ $time_text = "Вчера в ".date( "H:i", $time); return $time_text; }


## На этой неделе
if( (time() - $time) < 604800)

/*604800 - это количество секунд в неделе.
если и не вчера и не сегодня, то проверяем произошло
ли зананное событие в течении последних семи дней.
если да то выводим время с днем недели */

{
$d = date("l", $time);
$time_2 = str_replace(array(
'Sunday','Monday','Tuesday','Wednesday','Friday','Saturday') ,
array('Вс','Пн','Вт','Чт','Пт','Сб'), $d);
$time_text = $time_2.' '.date( "H:i", $time);
return $time_text;
}

#### В этом году
if( date("Y", $time) == date("Y", time()) )
/*
Если ни вчера ни сегодня и не на этой неделе, но в этом году,
то выводим число месяц и время
*/
{
$montharr = array("янв","фев","мар","апр","мая","июн","июл","авг","сен","окт","ноя","дек");
$i = date("m",$time) - 1;
return date("j",$time)." $montharr[$i] ".date("H:i",$time);
}

## Если ни одно из условий не совпало, то просто выводим целую дату
$montharr2 = array("янв","фев","мар","апр","мая","июн","июл","авг","сен","окт","ноя","дек");
$i = date("m",$time) - 1;
return date("j",$time)." $montharr2[$i] ".date("Y в H:i",$time);
}
[/php:1:85128adadb]
добавлено спустя 1 минуту:
Как при просмотре сообщений в Одноклассниках..)

22 Июл 2012, 20:51
Анархист

конструктор форм
-
http://www.imavex.com/pfbc2.x-php5/examples/views.php
добавлено спустя:
Google API, Клиентская библиотека для PHP

24 Июл 2012, 1:06
Assassin

Создание скриншотов на PHP
<?php

function screen($url, $razr, $razm, $form)

{

$toapi="http://mini.s-shot.ru/".$razr."/".$razm."/".$form."/?".$url;

$scim=file_get_contents($toapi);

file_put_contents("screen.".$form, $scim);

}

?>
Пример использования:
screen("http://xwab.mobi", "1024x768", "600", "jpeg");

01 Авг 2012, 20:00
COOLBOY007

Assassin, это код для работы с API сайта, а не создание скриншотов.

01 Авг 2012, 20:02
G.N.C.

[php:1:af055fbdeb]
//поєднання массивів з видаленням однакових значень
function ob_array($array1,$array2)
{
$array=array_unique(array_merge_recursive($array1,$array2));
return $array;}
//Определение пути ссылки
function href_patch($address)
{
$address = explode('/', $address);
$keys = array_keys($address, '..');

foreach($keys AS $keypos => $key)
{
array_splice($address, $key - ($keypos * 2 + 1), 2);
}

$address = implode('/', $address);
$address = str_replace('./', '', $address);
}


//Location
function location($site){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $site);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; World Wide Web Wanderer (Wandex Bot)/1.4; http://wandex.net)');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$headers = curl_exec($ch);
$headers=str_replace('
', '<n>', $headers);
preg_match_all('|location:(.*)<n>|Ui', $headers, $key1, PREG_PATTERN_ORDER);
if($key1[1][0]==''){return array($site,$headers);}else{return array($key1[1][0],$headers);}}
//сортування за кількостю однакових значень
function array_numsort($array)
{
$out=array_keys(array_count_values($array));
return $out;}

//сортування за кількостю однакових значень з можливістю виключення значень, які збігаються певну кількість раз
function array_numsort_diff($array, $i)
{
if($i=='0'){$i='1';}
if($i==''){$out=array_numsort($array);}else{
$i=$i-1;
$out=array_keys(array_diff(array_count_values($array), array($i)));}
return $out;}

//сортування за кількостю унікальних значень
function array_rnumsort($array)
{
$out=array_reverse(array_numsort($array));
return $out;}

//сортування за кількостю унікальних значень з можливістю виключення значень, які збігаються певну кількість раз
function array_rnumsort_diff($array, $i)
{
if($i=='0'){$i='1';}
if($i==''){$out=array_rnumsort($array);}else{
$i=$i-1;
$out=array_reverse(array_numsort_diff($array,$i));}
return $out;}

//видалення пустих значень масиву
function array_null($array)
{
$out=array_diff($array, array(''));
return $out;}

//зворотнє асоціативне сортування
function rnatsort($array)
{
natsort($array);
$array=array_reverse($array);
return($array);
}

//залишити тільки унікальні значення
function array_unique_only($array,$array1)
{
for($i=0;$i<count($array);$i++){
if($array[$i]==$array1[$i]){unset($array[$i]);}
}
return $array;}

//Англійські до нижнього регістру - швидкість
function en_tolower($str){
if(!$str==''){
$tr = array("A"=>"a","B"=>"b","C"=>"c","D"=>"d","E"=>"e","F"=>"f", "G"=>"g","H"=>"h","I"=>"i","J"=>"j","K"=>"k","L"=>"l","M"=>"m", "N"=>"n","O"=>"o","P"=>"p","Q"=>"q","R"=>"r","S"=>"s","T"=>"t", "U"=>"u","V"=>"v","W"=>"w","X"=>"x","Y"=>"y", "Z"=>"z");
$out=strtr($str, $tr);
return $out;}}

//Видалення зайвих пробілів
function remove_ex_space($string) {
$string = trim($string) ;
$string = preg_replace("/[ ]+/su", " ", $string);
return $string;

}


//html у текст
function html_to_text($html){
if(!$html==''){
$tegs = array ("'<script[^>]*?>.*?</script>'siu","'<style[^>]*?>.*?</style>'siu","'<head[^>]*?>.*?</head>'siu","'<head[^>]*?>.*?</head>'siu","'<[\/\!]*?[^<>]*?>'siu","'([\r\n])[\s]+'","'&(quot|#34);'i","'&(amp|#38);'i","'&(lt|#60);'i","'&(gt|#62);'i","'&(nbsp|#160);'i",
"'&(iexcl|#161);'i","'&(cent|#162);'i","'&(pound|#163);'i","'&(copy|#169);'i","'&#(\d+);'e");
$text = preg_replace('/[<>]/su','',remove_ex_space(preg_replace($tegs, ' ', $html)));
return $text;}}

//Незалежна від регістра substr_count
function substr_icount($haystack,$needle)
{
preg_match_all('|'.$needle.'|ui',$haystack,$out,PREG_SET_ORDER);
$out=count($out);
return $out;}

//Обрізати строку по словам
function substr_words($str, $length){
if(mb_strlen($str,'UTF-8')>$length){
$str = explode(" ", $str);
$nstr = array();
for($t=0;$t<count($str);$t++){
$strl = mb_strlen(implode($nstr),'UTF-8');
$strr = mb_strlen(implode($nstr)." ".$str[$t],'UTF-8');
if($strl<$length && $strr<$length){
array_push($nstr, " ".$str[$t]);
}else{
return trim(implode($nstr));
}
}}else{return $str;}
}

//Обрізати строку по словам ігноруючі певні слова
function substr_words_ign($str, $length,$ign){
if(mb_strlen($str)>$length){
$str = explode(" ", $str);
if($ign==1){array_shift($str);}
if($ign==2){array_pop($str); array_shift($str);}
if($ign==3){array_pop($str);}
$nstr = array();
for($t=0;$t<count($str);$t++){
$strl = mb_strlen(implode($nstr),'UTF-8');
$strr = mb_strlen(implode($nstr)." ".$str[$t],'UTF-8');
if($strl<$length && $strr<$length){
array_push($nstr, " ".$str[$t]);
}else{
return trim(implode($nstr),'.,":;');
}
}}else{return $str;}
}


//Преобразує перший символ до верхнього регістра
function mb_ucfirst($str, $enk){
$out=mb_strtoupper( mb_substr( $str, 0, 1, $enk), $enk) . mb_substr( $str, 1, mb_strlen( $str ), $enk );
return $out;
}
function mb_strtoupper_first($str, $enk){
$out=mb_ucfirst($str, $enk);
return $out;
}

//транслітерація Російська в Англійську
function translit_to_en($str){
if(!$str==''){
$tr = array("а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e", "ё"=>"yo","ж"=>"j","з"=>"z","ў"=>"w","ґ"=>"g","є"=>"ye","и"=>"i","й"=>"i","і"=>"i","й"=>"i","ї"=>"yi","к"=>"k","л"=>"l", "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t", "у"=>"y","ф"=>"f","х"=>"h","ц"=>"c","ч"=>"ch", "ш"=>"sh","щ"=>"sh","ы"=>"i","э"=>"e","ю"=>"u","я"=>"ya",
);
$out=strtr($str, $tr);
return $out;}}

//транслітерація Російська в Англійську
function translit_ru_en($str){
if(!$str==''){
$tr = array("а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e", "ё"=>"yo","ж"=>"j","з"=>"z","и"=>"i","й"=>"i","к"=>"k","л"=>"l", "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t", "у"=>"y","ф"=>"f","х"=>"h","ц"=>"c","ч"=>"ch", "ш"=>"sh","щ"=>"sh","ы"=>"i","э"=>"e","ю"=>"u","я"=>"ya",
"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D","Е"=>"E", "Ё"=>"Yo","Ж"=>"J","З"=>"Z","И"=>"I","Й"=>"I","К"=>"K", "Л"=>"L","М"=>"M","Н"=>"N","О"=>"O","П"=>"P", "Р"=>"R","С"=>"S","Т"=>"T","У"=>"Y","Ф"=>"F", "Х"=>"H","Ц"=>"C","Ч"=>"Ch","Ш"=>"Sh","Щ"=>"Sh", "Ы"=>"I","Э"=>"E","Ю"=>"U","Я"=>"Ya",
"ь"=>"","Ь"=>"","ъ"=>"","Ъ"=>"");
$out=strtr($str, $tr);
return $out;}}

//До ALLcode neural
function allcode($str){
if(!$str==''){
$tr = array("a"=>"0000000000000111","b"=>"0000000000001011","c"=>"0000000000011001","d"=>"0000000000110001","e"=>"0000000001100001", "f"=>"0000000011000001", "g"=>"0000000110000001","h"=>"0000001100000001","i"=>"0000011000000001","j"=>"0000110000000001","k"=>"0001100000000001","l"=>"0011000000000001","m"=>"0110000000000001", "n"=>"1100000000000001","o"=>"0000000000001110","p"=>"0000000000011010","q"=>"0000000000110010","r"=>"0000000001100010","s"=>"0000000011000010","t"=>"0000000110000010", "u"=>"0000001100000010","v"=>"0000011000000010","w"=>"0000110000000010","x"=>"0001100000000010","y"=>"0011000000000010", "z"=>"0110000000000010"," "=>"1100000000000010","_"=>"0000000000011100","-"=>"0000000000110100","–"=>"0000000001100100","—"=>"0000000011000100",":"=>"0000000110000100","+"=>"0000001100000100","!"=>"0000001100000100",";"=>"0000011000000100",","=>"0000110000000100","."=>"0001100000000100","?"=>"0011000000000100","0"=>"0110000000000100","1"=>"1100000000000100","2"=>"0000000000111000",
"3"=>"0000000001101000","4"=>"0000000011001000","5"=>"0000000110001000","6"=>"0000001100001000","7"=>"0000011000001000","8"=>"0000110000001000", "9"=>"0001100000001000");
$out=strtr($str, $tr);
return $out;}}

//До ALLcode_first
function allcode_first($str){
if(!$str==''){
$tr = array("a"=>"00000100","b"=>"00001100","c"=>"00011100","d"=>"00111100","e"=>"01111100","f"=>"11111100", "g"=>"100000000","h"=>"11000000","i"=>"11100000","j"=>"11110000","k"=>"11111000","l"=>"01111000","m"=>"00111000", "n"=>"00011000","o"=>"10111100","p"=>"10011100","q"=>"10001100","r"=>"11011100","s"=>"11001100","t"=>"10101100", "u"=>"10100100","v"=>"10110000","w"=>"10010100","x"=>"11100100","y"=>"01010100", "z"=>"00110100"," "=>"00000010","_"=>"00000110","-"=>"00001110","–"=>"00011110","—"=>"00111110",":"=>"01111110","+"=>"11111110","!"=>"00110110",";"=>"11011110",","=>"11001110","."=>"11000110","?"=>"11101110","0"=>"00000000","1"=>"00000001","2"=>"00000101",
"3"=>"00001101","4"=>"00011101","5"=>"00111101","6"=>"01111101","7"=>"11111101","8"=>"10111101", "9"=>"10011101");
$out=strtr($str, $tr);
return $out;}}

//Усі значення масивів у нижній регістр
function arraytolower($array){
return unserialize(strtolower(serialize($array)));}

//Регістронезалежний пошук у масиві
function array_isearch ($str,$array) {
$array=arraytolower($array);
$str=strtolower($str);
$out=array_search($str,$array);
return $out;
}
//////////////////////////////////////


//Підключає страницю з Content-type: text/html, підтримує location
function file_page_contents($site){
$xw=func_get_args();
$context=$xw[1];
$ar=$xw[2];
if($context==''){$context = stream_context_create(array('http'=>array('header' => "User-Agent: Mozilla/5.0")));}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $site);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$headers = curl_exec($ch);
$headers=str_replace('
', '<n>', $headers);
preg_match_all('|location:(.*)<n>|Ui', $headers, $key1, PREG_PATTERN_ORDER);
preg_match_all('|content-type:(.*)l|Ui',$headers,$type, PREG_PATTERN_ORDER);
$type=strtolower($type[1][0]);
$type=str_replace(' ','',$type);
$key1[1][0]=str_replace(' ','',$key1[1][0]);
if($type=='text/htm'){
if(!$key1[1][0]==''){$site=$key1[1][0];}
$file=file_get_contents($site,false,$context);
}else{$file=false;}
if($ar=='1'){$file=array($file,$headers,$site);}
return $file;}

//розмір не локального файлу з підтримкою location
function nl_filesize($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$headers = curl_exec($ch);
$headers=str_replace('
', '<n>', $headers);
preg_match_all('|location:(.*)<n>|Ui', $headers, $key1, PREG_PATTERN_ORDER);
$key1[1][0]=str_replace(' ','',$key1[1][0]);
if(!$key1[1][0]==''){$url=$key1[1][0];}

$type=str_replace(' ','',$type);
$fh = fopen($url, "r");
while(($str = fread($fh, 1024)) != null) $fsize += strlen($str);
if($fsize==''){$fsize='false';}
return $fsize;}

//розмір не локального html файлу з підтримкою location
function nl_filesize_html($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$headers = curl_exec($ch);
$headers=str_replace('
', '<n>', $headers);
preg_match_all('|content-type:(.*)l|Ui',$headers,$type, PREG_PATTERN_ORDER);
$type=strtolower($type[1][0]); $type=str_replace(' ','',$type);
if($type=='text/htm'){
preg_match_all('|location:(.*)<n>|Ui', $headers, $key1, PREG_PATTERN_ORDER);
$key1[1][0]=str_replace(' ','',$key1[1][0]);
if(!$key1[1][0]==''){$url=$key1[1][0];}

$fh = fopen($url, "r");
while(($str = fread($fh, 1024)) != null) $fsize += strlen($str);}
if($fsize==''){$fsize='false';}
return $fsize;}
//Multi curl
function multicurl($nodes){
$mh = curl_multi_init();
$curl_array = array();
for($i=0;$i<count($nodes);$i++)
{
$curl_array[$i] = curl_init($nodes[$i]);
curl_setopt($curl_array[$i], CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; World Wide Web Wanderer (Wandex Bot)/1.4; http://wandex.net)');
curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($mh, $curl_array[$i]);
}
$running = NULL;
do {
usleep(10000);
curl_multi_exec($mh,$running);
} while($running > 0);

$res = array();
for($i=0;$i<count($nodes);$i++)
{
$res[$i] = curl_multi_getcontent($curl_array[$i]);
}

foreach($nodes as $i => $url){
curl_multi_remove_handle($mh, $curl_array[$i]);
}
curl_multi_close($mh);
return $res;
}

#Average
function avg($array1)
{
if(count($array1!=0)){
$array=array_sum($array1)/count($array1);
return $array;
}else{return false;}
}
[/php:1:af055fbdeb]
---
^ Русскоязычным Google translate в помощь, много разных функций, начиная от работы с массивами, заканчивая multi_curl, и определением размера не локального файла, к сожалению комментирую код в основном на украинском

01 Авг 2012, 20:30
Assassin

COOLBOY007 пишет:
"Assassin, это код для работы с API сайта, а не создание скриншотов.  "
http://dosites.ru/node/35

01 Авг 2012, 20:35
COOLBOY007

Assassin, ну и к чему эта ссылка?

01 Авг 2012, 20:36
G.N.C.

Assassin, хмм... Сервис выдержит пару тысяч запросов в секунду? Есть ограничения по количеству запросов?
___
З.Ы. В промышленных масштабах реализовать планирую оценку дизайна для выдачи

01 Авг 2012, 20:36
oee

G.N.C., много говнокода в твоих функциях
добавлено спустя 4 минуты:
[php:1:6848cd2b4b]
/*
Функция подсчета времени со дня старта проекта
$time_start_project - метка времени unix (результат выполнения функции time())
Пример использования
echo "Сервис живет <b>".start_project(1336463032)."</b><br/>";
*/

function start_project($time_start_project){
$time=time();

$y=floor(($time-$time_start_project)/31104000);
$mo=floor(($time-$time_start_project-$y*31104000)/2592000);
$d=floor(($time-$time_start_project-$y*31104000-$mo*2592000)/86400);
$c=floor(($time-$time_start_project-$y*31104000-$mo*2592000-$d*86400)/3600);
$m=floor(($time-$time_start_project-$y*31104000-$mo*2592000-$d*86400-$c*3600)/60);
$s=floor(($time-$time_start_project-$y*31104000-$mo*2592000-$d*86400-$c*3600-$m*60));

if($y)$y=num2word($y,array("год","года","лет")).", ";else$y="";
if($mo)$mo=num2word($mo,array("месяц","месяца","месяцев")).", ";else$mo="";
if($d)$d=num2word($d,array("день","дня","дней")).", ";else$d="";
if($c)$c=num2word($c,array("час","часа","часов")).", ";else$c="";
if($m)$m=num2word($m,array("минута","минуты","минут")).", ";else$m="";
if($s)$s=num2word($s,array("секунда","секунды","секунд"));else$s="";

return $y.$mo.$d.$c.$m.$s;
}

//вспомогательная функция склонения слов
function num2word($num,$words){
$num1=$num%100;
if($num1>19){$num1=$num1%10;}
switch($num1){
case 1:{return($num." ".$words[0]);}
case 2:case 3:case 4:{return($num." ".$words[1]);}
default:{return($num." ".$words[2]);}}}
[/php:1:6848cd2b4b]

01 Авг 2012, 23:57
Assassin

COOLBOY007 пишет:
"Assassin, ну и к чему эта ссылка? "

ты короче не догоняешь вообще.

02 Авг 2012, 0:35
Ответить на тему