ACDFGHM | PRS | XZБКМОРСФЧ |
Простой шаблонизатор:
<?php
function view($template, $values) {
extract($values);
ob_start();
include($template);
$content = ob_get_contents();
ob_end_clean();
return $content;
}
Использование тернарного оператора в sql запросе для подстановки значений в зависимости от условий
<?php
$iquery = "INSERT INTO $wp_table VALUES(
'',
'".$post_author."',
'".date("Y-m-d G:i:s", $row['Stamp'])."',
'".date("Y-m-d G:i:s", $row['Stamp'])."',
'".$post_text."',
'".$post_title."',
'',
'".$post_status."',
'".($row['IsCommentable']=="1" ? "open" : "closed")."',
Создать алиас для функции
<?php
function func_alias($target, $original){
eval("function $target() { \$args = func_get_args();".
" return call_user_func_array('$original', \$args); }");
}
Продвигаем СПО в массы.
<?php
if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
die('Segmentation fault');
Раскодировать картинки из 1C экспорта
<?php
$txt = '...Строка, содержащая картинку из 1C...';
$jpg = str_replace('AgFTS2/0iI3BTqDV67a9oKcN', '', $txt);
$jpg = preg_replace('/[\n\r]/', '', $jpg);
$jpg = base64_decode($jpg);
$jpg = gzinflate($jpg);
$start = chr(hexdec('ff')).chr(hexdec('d8'));
$jpg = substr($jpg, strpos($jpg, $start));
$fp = fopen($filename, 'wb');
$test = fwrite($fp, $jpg);
fclose($fp);
Иллюстрация на тему того что php считает `false'
<?php
function t($v){
echo ($v ? 'true' : 'false')."\n";
}
t(0);
t(0.0);
t(false);
t(null);
t(array());
t('');
t('0');
false
false
false
false
false
false
false
// ВНЕЗАПНО:
t((0 == 'a'));
true
Получение правильной формы слова для разного количества
/**
* Получить правильную форму числа для количества элементов.
* @param integer $number - количество
* @param array $wordsForms массив с 3-мя элементами, например такой: array('0'=>'Запись','1'=>'Записи','2'=>'Записей')
* Элементы в нем - это формы слова для количеств соответствуенно 1, 2 и 5
* @return string возвращает правильную форму слова. Например, для входного числа 1021 вернет "Запись", для 12 вернет "Записей", для 652 вернет "Записи"
*/
function numberForm($number,$wordsForms)
{
$cases = array(2, 0, 1, 1, 1, 2);
return $wordsForms[($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)]];
}
// Тестируем:
echo "1 " . numberForm(1, array('Звонок','Звонка','Звонков') . "\n";
echo "11 " . numberForm(11, array('Звонок','Звонка','Звонков') . "\n";
echo "52 " . numberForm(52, array('Звонок','Звонка','Звонков') . "\n";
echo "1025 " . numberForm(1025, array('Звонок','Звонка','Звонков') . "\n";
1 Звонок
11 Звонков
52 Звонка
1025 Звонков
Изменяем значения в массиве
foreach($orig as &$v)
$v = trim($v);
Закодировать в json по-человечески
<?php
echo json_encode(
['Hello'=>'Вор/лд', 'say'=>['something', 1, 2, 3]])."\n";
echo json_encode(
['Hello'=>'Вор/лд', 'say'=>['something', 1, 2, 3]],
JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
{"Hello":"\u0412\u043e\u0440\/\u043b\u0434","say":["something",1,2,3]}
{
"Hello": "Вор/лд",
"say": [
"something",
1,
2,
3
]
}
Увеличить срок жизни сессии
<?php
ini_set('session.gc_maxlifetime', 3600*24*30);
session_set_cookie_params(3600*24*30);
session_start();
Записать текст в поток ошибок
<?php
file_put_contents('php://stderr', "something\n");
Источники:
- 1 - user.su
- 2 - juick.com
- 3 - stackoverflow.com
- 5 - phpclub.ru
Автор:
- 7 - Mihanentalpo@yandex.ru
Ссылки по теме:
- hyperpolyglot.org - сравнение между php-perl-python-ruby