function eatme(s) {
var arr = s.split('')
, pos = [] // позиции удалябельных символов
, i
, todo = [] // позиции чтобы удалить
;
for(i=0;i<arr.length;i++) if( !arr[i].match(/[\s\d\.,\?\!:;\(\)"'`—–-]/)) pos.push(i);
if( pos.length === 0) return s; // нечего удалять
todo.push( pos.splice( Math.floor( Math.random() * pos.length),1)[0]);
if( pos.length > 0 && Math.random() > 0.5) {
todo.push( pos.splice( Math.floor( Math.random() * pos.length),1)[0]);
}
// todo содержит 1 или 2 индеса для удаления
todo = todo.sort(function(a,b){return a>b?1:(a<b?-1:0)});
while(todo.length) arr.splice( todo.pop(), 1);
return arr.join('');
}
console.log( eatme("hello, world!"))var words = {}, i, src = document.getElementById('text')
.innerText
.split(/[\s\.,:;!?]+/)
.map(function(el){ return el.toLowerCase()})
;
for(i=0; i<src.length; i++) {
word = src[i];
if( words.hasOwnProperty(word)) words[word]++;
else words[word] = 1;
}
var dupes = [];
for(i in words) if(words[i] > 1) dupes.push(i);
var p = document.createElement("p");
p.innerText = JSON.stringify(dupes);
document.body.appendChild(p);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; $('.class').hover(
function() {
var $el = $(this);
$el.addClass('active');
setTimeout(function() {
$el.removeClass('active')
}, 500);
}
);// 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);
});var eur = "10.50 EUR";
var price = parseFloat( s.substr( 0, s.length - 4)).toFixed(2); // "10.50"var q = "55"; // jQuery возвращает строку
var total = parseFloat( price) * parseInt(q);
total = total.toFixed(2); // строка, точно два знака после запятой