var str = "matrix(1 0 0 1 40 230)";
var matched = str.match(/(\d+)\s+(\d+)\)$/);
console.log(matched[1]); // 40
console.log(matched[2]); // 230
var str = "matrix(1 0 0 1 40 230)";
var content = str.match(/\((.+)\)/)[1]; // То, что в скобках
content = content.split(" "); // Поделить по пробелам
console.log(content); // [1, 0, 0, 1, 40, 230]
autoupdate.php
. autoupdate.php
не отдает результат, а тянет время - while(true) {}
или типа того.autoupdate.php
может сам вовремя определить, когда обновить, то:<?php
while(true) {
$update = ...;
if($update) {
echo "UPD ";
flush();
}
sleep(1); // Подкрутить
}
var xhr = new XMLHTTPRequest();
xhr.timeout = 1000 * 60 * 60; // 1 час
xhr.onerror = function(e) {
// Печалька
};
xhr.onreadystatechange = function() {
if(xhr.readyState != 3) return; // Если бы был 4, мы бы ловили, только когда скрипт бы завершился, а 3 - любой вход
// В xhr.responseText новый результат
location.reload();
};
function isChrome() {
var isChromium = window.chrome,
winNav = window.navigator,
vendorName = winNav.vendor,
isOpera = winNav.userAgent.indexOf("OPR") > -1,
isIEedge = winNav.userAgent.indexOf("Edge") > -1,
isIOSChrome = winNav.userAgent.match("CriOS");
if(isIOSChrome){
return true;
} else if(isChromium !== null && isChromium !== undefined && vendorName === "Google Inc." && isOpera == false && isIEedge == false) {
return true;
} else {
return false;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<center>
<h1>Alladin</h1>
<h3>
В одном персидском городе <?=$_POST["city"]?> жил бедный портной <?=$_POST["tailorName"]?>. У него были жена и сын по имени <?=$_POST["sonName"]?>. Когда Аладдину исполнилось <?=$_POST["age"]?> лет, отец его сказал:
— Пусть мой <?=$_POST["sonName"]?> будет портным, как я,— и начал учить Аладдина своему ремеслу.
</h3>
</center>
</body>
</html>
echo...
, потому что она вызывалась уже внутри PHP! Я просто вынес текст сказки вне PHP, прямо в HTML. Там с помощью <?=...?>
вставляется текст. $str = "@1@ @2@";
preg_match_all("/@(\d+)@/", $str, $matches);
var_dump($matches[1]); // Массив ID
$str = "@1@ @2@";
echo preg_replace_callback("/@(\d+)@/", function($arr) {
return "<a href='cards/" . $arr[1] . "'>@" . $arr[1] . "@</a>"; // В $arr[1] ID
}, $str);
const keypair = require('keypair');
onmessage = (e) => {
let time = Date.now();
let workerResult = keypair(e.data);
postMessage({
result: workerResult,
time: Date.now() - time
});
}
if (window.Worker) {
let container = document.querySelector('#container');
let myWorker = new Worker("worker.js");
myWorker.onmessage = (e) => {
container.innerHTML = e.data.result + " in " + e.data.time + "ms";
console.log('Message received from worker');
};
myWorker.postMessage({"bits": 2048});
}
else {
console.log('window.Worker Error');
}
throw new Error(...);
бросает исключение - что-то типа сигнализатора ошибки. Когда выбрасывается исключение, исключительную ситуацию нужно как-то обработать.try { // Пробуем (try) исполнить код
move();
// Код, который может выбросить исключение
} catch(e) { // Ловим (catch) исключение, если оно было выброшено, записываем его в e (можно любую переменную, но к e все уже привыкли)
alert("ERROR");
// Выводим ошибку или обрабатываем ее еще как-то
}
catch(e)
можно написать finally
- код, который будет выполнен, и если код выполнился, и если упал с ошибкойtry { // Пробуем (try) исполнить код
move();
// Код, который может выбросить исключение
} catch(e) { // Ловим (catch) исключение, если оно было выброшено, записываем его в e (можно любую переменную, но к e все уже привыкли)
alert("ERROR");
// Выводим ошибку или обрабатываем ее еще как-то
} finally {
alert("It worked (or didn't :) )");
}
throw
, для этого ему передается исключение (или строку, или число, или другой объект, но лучше иключение). Потом брошенное исключение можно поймать с помощью try
.catch
, тогда оно перейдет к следующему catch
- это называется проброс исключений. Например:function doThat() {
try {
a();
} catch(e) {
if(e instanceof TypeError) { // Если выброшено исключение TypeError, то
alert("TypeError!"); // написать TypeError!
} else { // Иначе
throw e; // doThat() не знает, как обрабатывать другие типы исключений, передаем дальше
}
}
}
// ...
try {
doThat(); // Если a() выбросит TypeError, catch в doThat() его обработает
} catch(e) { // doThat() пробросил исключение дальше
alert("Some other error!");
}
move();
if (!y || !x || !z) {
throw new Error("не хватает данных");
}
if (!x || !y) {
throw new Error("не хватает входных данных");
}
move();
if (!z) {
throw new Error("не хватает выходных данных");
}
move()
, если мы не уверены, что данных хватает - так мы проверяем, что входные и выходные данные правильные.