$arr = array (1, 2, 3, 4, 5, 6, 7, 8, 9);
$len = 3; // длина строки
// из массива данных для одной строки делает разметку строки
function make_row( $arr) {
return '<tr>' . implode( '', array_map( 'make_td', $arr)) . '</tr>';
}
// из данных одной ячейки делает разметку ячейки
function make_td( $td) { return '<td>' . $td . '</td>'; }
$rows = array_chunk( $arr, $len); // массив массивов по 3 эл.
$rowsHtml = array_map( 'make_row', $rows); // массив строк
$tableHtml = '<table>' . implode( "\n", $rowsHtml) . '</table>';
echo $tableHtml;
// getTimeTill.php
$deadline = strtotime("2017-07-01 03:00:00");
echo round( 1000 * $deadline - 1000 * microtime(true)); // в миллисекундах
var start = (new Date).getTime();
$.get("getTimeTill.php", function( ms ){
var bias = Math.round(((new Date).getTime() - start) / 2);
var remains = ms + bias; // сколько остаётся микросекунд до события на данный момент
var deadline = (new Date).getTime() + remains; // локальное время События
// можно запускать таймер, который раз в 200 ms будет обновлять время до События
var el = document.getElementById("timer");
window.setInterval( function(){
var remains = Math.floor((deadline - (new Date).getTime())/1000);
var H = Math.floor( remains / 3600);
remains -= 3600 * H;
H = ( '0' + H ).substr(-2);
var M = Math.floor( remains / 60);
remains -= 60 * M;
M = ( '0' + M ).substr(-2);
var S = ( '0' + remains ).substr(-2);
timer.innerText = "" + H + ":" + M + ":" + S;
}, 200);
});
function ip2n( $ip ) { // строку ip перевести в целое
$ipa = explode('.', $ip);
return $ipa[0]<<24 | $ipa[1] << 16 | $ipa[2] << 8 | $ipa[3];
}
function n2ip( $n ) { // целое перевести в строку ip
return implode('.', array(
$n >> 24 & 0xFF,
$n >> 16 & 0xFF,
$n >> 8 & 0xFF,
$n & 0xFF
));
}
function bitreverse( $n ) { // развернуть порядок бит в 32-битном целом
return bindec( strrev( sprintf( '%032b', $n)));
}
$ips = array(
'192.168.1.15',
'192.168.1.16',
'192.168.1.17',
'95.181.217.91',
'95.181.217.96',
'95.181.217.97',
'91.216.3.90',
'91.216.3.91',
'91.216.3.99',
'5.62.157.78',
'5.62.157.84',
'5.62.157.87',
);
$ips = array_map( 'ip2n', $ips);
$ips = array_map( 'bitreverse', $ips);
sort( $ips, SORT_NUMERIC);
$ips = array_map( 'bitreverse', $ips);
$ips = array_map( 'n2ip', $ips);
print_r($ips);
/* Array
(
[0] => 95.181.217.96
[1] => 192.168.1.16
[2] => 5.62.157.84
[3] => 91.216.3.90
[4] => 5.62.157.78
[5] => 95.181.217.97
[6] => 192.168.1.17
[7] => 91.216.3.99
[8] => 95.181.217.91
[9] => 91.216.3.91
[10] => 5.62.157.87
[11] => 192.168.1.15
) */
/var/www/Project/
.secret_data.php
public_html/
index.php <-- отсюда подключается "../.secret_data.php"
$_ENV
и $_SERVER
при выполнении, и оттуда берут при необходимости. Грубо пример .secret_data.php:$params = array(
'API_KEY' => '3pyWtP7KYVheJWkftdchJLWhwUcK8Rdw',
'DB_HOST' => '127.0.0.1',
'DB_USER' => 'root',
'DB_PASS' => 'secret',
);
$_ENV = array_merge( $_ENV, $params);
$_SERVER = array_merge( $_SERVER, $params);
.env
<?php
$dict = array(
'non_country' => "Не выбрано",
'austria' => "Австрия",
'austria' => "Австрия",
'belgia' => "Бельгия",
'bolgaria' => "Болгария",
'vengry' => "Венгрия",
'germany' => "Германия",
'grecee' => "Греция",
'daniya' => "Дания",
'ispania' => "Испания",
'italy' => "Италия",
'kitay' => "Китай",
'latviya' => "Латвия",
'litva' => "Литва",
'malta' => "Мальта",
'niderlandy' => "Нидерланды",
'norvegiya' => "Норвегия",
'polsa' => "Польша",
'portugal' => "Португалия",
'singapur' => "Сингапур",
'slovakiya' => "Словакия",
'sloveniya' => "Словения",
'usa' => "США",
'finland' => "Финляндия",
'france' => "Франция",
'chech' => "Чехия",
'shvecariya' => "Швейцария",
'sveciya' => "Швеция",
'estoniya' => "Эстония"
);
function toName($key) {
return isset( $dict[$key]) ? $dict[$key] : $key;
}
if( isset( $_POST["country"]) {
$names = array_map('toName', $_POST['country']);
$email_content .= join(', ', $names);
}
$cities = array('London', 'NY', 'LE', 'Rome');
function wrapRow( $row) { return '<div>' . join(", ", $row) . '</div>'; }
$rows = array_chunk( $cities, 3);
$html = join( array_map("wrapRow", $rows));
var_dump($html); // "<div>London, NY, LE</div><div>Rome</div>"
$client = new \GuzzleHttp\Client;
$resource = fopen( $tmpfile, 'r');
$response = $client->request(
'POST',
$upload_url,
[
'multipart' => [
[
'name' => 'file',
'contents' => $resource
]
]
]
);
$uploadResult = json_decode( $response->getBody());
<?php
$search = filter_input( INPUT_GET, "search", FILTER_SANITIZE_STRING);
if( !empty($search)) {
echo $search;
echo "Yes";
} else {
echo "No";
}