$str = "IEEE 802.11a, IEEE 802.11ac, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n";
preg_match_all('#([\d.]+)([a-z]{1,})#', $str, $matches);
array_multisort(array_map('strlen', $matches['2']), $matches['2']);
echo $matches['1']['0'] . implode('/', $matches['2']);
802.11a/b/g/n/ac
<?php
$string = "IEEE 802.11a, IEEE 802.11ac, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n";
$newstring = "IEEE 802.11 " . str_replace(", ","/",str_replace("IEEE 802.11", "", $string));
print($newstring);
Последовательность букв через слеш нужно также соблюстиэто как раз про то, что их нужно отсортировать?
'use strict';
document.addEventListener('DOMContentLoaded', () => {
let checkbox = document.querySelector('label[for="aux_prem"]');
checkbox.addEventListener('click', function()
{
let parent = this.parentNode;
( !parent.classList.contains('selected') ) ?
parent.classList.add('selected'):
parent.classList.remove('selected');
});
});
function getPrice() {
return (
(!parseInt(roofpt) && 5500) ||
(roofmat == 1 && 7900) ||
(roofmat == 2 && 8900) || 0 ); }
Price2 = 0;
if (roofpt == null || roofpt == 0) Price2 = 5500;
else if (roofpt !== null
|| roofpt !== 0
&& roofmat == 1) Price2 = 7900;
else if (roofpt !== null
|| roofpt !== 0
&& roofmat == 2) Price2 = 8900;
let Price2 = 0;
if (!roofpt) Price2 = 5500;
else Price2 = 7900;
let Price2 = 0;
Price2 = (roofpt) ? 7900 : 5200;
if (!roofpt) Price2 = 5500; // null, 0, undefined, false, пустая строка
else if (roofmat == 1) Price2 = 7900; // и так известно, что не пустое
else if (roofmat == 2) Price2 = 8900; // и так известно, что не пустое
else Price2 = 0; // по умолчанию
&&
выше, чем ||
. Эти два условия выглядят похоже, имелась в виду, наверное, лишняя перепроверка на null/ноль:(roofpt == null || roofpt == 0)
(roofpt !== null || roofpt !== 0 && roofmat == 1)
&&
, потом ||
:A || B && C === A || (B && C)
// и второе условие на деле считается так:
(roofpt !== null || (roofpt !== 0 && roofmat == 1))
rootpt
, неравном null
.==
и строгое неравенство !==
. Разжёвывать не буду, чтобы вы провалили собеседование.$arr_words = explode('\',\'', $words);
$arr_result = array();
for ($i = 0; $i < count($arr_words); ++$i) {
if (!isset($arr_result[strlen($arr_words[$i])])) $arr_result[strlen($arr_words[$i])] = array();
$arr_result[strlen($arr_words[$i])][] = $arr_words[$i];
};
foreach ($arr_result as $cnt => $words) {
file_put_contents('/path/'.$cnt.'_letter.txt', implode("\r\n", $words));
};
let getTaskSolution = (src) => {
return new Promise((resolve, reject) => {
anticaptcha.getBalance(async (err, balance) => {
if (err) {
reject(err);
return;
}
anticaptcha.setMinLength(5);
if (balance > 0) {
anticaptcha.createImageToTextTask({
case: true, // or params can be set for every captcha specially
body: await image2base64(src).catch(reject)
}, (err, taskId) => {
if (err) {
reject(err);
return;
}
anticaptcha.getTaskSolution(taskId, (err, taskSolution) => {
if (err) {
reject(err);
return;
}
resolve(taskSolution)
});
});
}
});
});
};
(async () => {
setUTitle("Loading app");
if (!VK_TOKEN) {
let succ = await initToken();
if (!succ) {
process.exit();
}
}
vk.token = VK_TOKEN;
vk.captchaHandler = async ({src, type}, retry) => {
let key = await getTaskSolution(src).catch((error) => console.log(error));
try {
await retry(key);
con('Всё ок.');
} catch (e) {
con("Всё фигово. " + e.message, true);
}
};
})();
anticaptcha.getBalance(async function(err, balance) {
// ...
const API_URL = 'https://api.vk.com/captcha.php?sid=405226711931&s=1';
const body = await image2base64(API_URL).catch((error) => console.log(error));
if (balance > 0) {
anticaptcha.createImageToTextTask({
case: true, // or params can be set for every captcha specially
body
},
// ...
}
});