var s = {comment:"test"};
var s1 = JSON.stringify(s); // {"comment":"test"}
var s2 = JSON.stringify(s1); // "{\"comment\":\"test\"}"
var s3 = JSON.stringify(s2); // "\"{\\\"comment\\\":\\\"test\\\"}\""
var s4 = JSON.stringify(s3); // "\"\\\"{\\\\\\\"comment\\\\\\\":\\\\\\\"test\\\\\\\"}\\\"\""
FILTER_VALIDATE_INT
:$input = "22";
$test = filter_var( $input, FILTER_VALIDATE_INT);
if( $test === false) throw new Exception("не целое что-то");
$test // содержит точно целое число
$tests = [
'5qwerty' => false,
'55' => 55,
'1234567890' => 1234567890,
'123Z456' => false,
'A10' => false,
];
$start = microtime(true);
for ($i = 0; $i <= 1E6; $i++) {
foreach( $tests as $test => $result) {
if( $result !== filter_var( $test, FILTER_VALIDATE_INT)) throw new Exception("Mismatch");
// if( !!preg_match('/^\d+$/', $test) !== !!$result) throw new Exception("Mismatch");;
}
}
echo (microtime(true) - $start) . PHP_EOL;
$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);
}