Как переиндексировать массив чтобы индексы шли по порядку (PHP)
Допустим после удаления некоторых элементов есть такой массив:
$test = array(
2 => "Test1",
10 => "Test2",
22 => "Test3"
);
Необходимо получить:
$test = array(
0 => "Test1",
1 => "Test2",
2 => "Test3"
);
Как этого добиться:
$result = array_values($test);
print_r($result); //выведет нужный результат
Как заменить много пробелов на один (PHP)
Если необходимо заменить много пробелов (любое количество) на один пробел в строке, то для этого можно воспользоваться регулярными выражениями.
Пример:
$sourceString = ' a b c d e';
$result = preg_replace('!\s+!', ' ', $sourceString);
var_dump($result); //результат: " a b c d e"
CURL как выключить проверку SSL (PHP)
Допустим есть ситуация, когда нужно выключить проверку SSL при CURL запросе.
Это можно сделать просто:
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
//далее-другие параметры.
Как исправить ошибку "Fatal error: Array and string offset access syntax with curly braces is no longer supported"
Если в более новой версии PHP вы встретились с ошибкой “Fatal error: Array and string offset access syntax with curly braces is no longer supported”, то поправить ее будет очень просто.
Решение:
заменить в строке ошибки фигурные скобки на квадратные.
Пример:
$myString = "podelitsa";
echo($myString{0}); //ошибка
echo($myString[0]); //решение
Как отправить POST запрос используя Selenium?
Возможна такая ситуация, когда при работе с Selenium возникла необходимость в отправке POST запроса.
Основная проблема в том, что Selenium такие запросы не поддерживает.
Что же можно сделать?
Есть одно решение: так как Selenium позволяет выполнять на странице JavaScript, то с помощью скриптов можно динамически создать форму на странице и затем ее отправить. Либо же сразу сделать нужный вам запрос с помощью JavaScript.
Простой вариант (PHP + JavaScript):
$client = Client::createChromeClient();
$client->request('GET', 'mytest.com');
$js = '
let data = {elementName: "value"};
fetch('https://testaddress.com', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(data)
}).then(res => {
console.log('Response:', res);
});
';
$client->executeScript($js);
$client->close();
В данном примере сначала открываем страницу mytest.com с помощью Selenium (Symfony Panther), затем отправляем POST запрос на testaddress.com используя js.
Как скачать файл, если в ответе получаем readableStream (JavaScript)
Допустим после ajax запроса у нас есть ответ response с типом данных readableStream. Задача: сделать так, чтобы этот поток сразу скачивался в файл.
Решение:
//функция для скачивания файла:
function downloadFile(blob, filename) {
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}
//запрос:
let data = {elementName: "value"};
fetch("http://mytesturl", {
method: "post",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then( (response) => {
console.log('resp', response);
//если получили ответ в нужном формате, то вызываем скачивание файла:
response.blob().then(blob => downloadFile(blob, 'testfile.pdf'))
})
Selenium WebDriver: как выполнить js код на странице (PHP)
Допустим, есть необходимость выполнить кастомный js код на странице, контролируемой автоматически с помощью Selenium WebDriver.
Рассмотрим как это сделать на примере:
$client = Client::createChromeClient();
$client->request('GET', 'mytest.com');
$js = 'alert("Test!")';
$client->executeScript($js);
sleep(5); // для того чтобы увидеть результат, если запускаете не в headless режиме
$client->close();
OSPanel: не запускается phpPgAdmin
Если вы пробуете открыть phpPgAdmin в Open Server и вместо панели видите такую ошибку:
Your PHP installation does not support the pgsql module. You will need to install, enable, or compile it to use phpPgAdmin
То решение скорее всего простое: в php.ini необходимо включить расширение pgsql и перезапустить сервер.
Как получить перечень всех месяцев, входящих в заданный интервал дат (PHP)
Задача: есть две даты, надо получить перечень всех месяцев, которые затрагивает данный интервал.
Решение:
function getMonths(DateTime $startD, DateTime $endD)
{
$start = $startD->modify('first day of this month');
$end = $endD->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 month');
$period = new DatePeriod($start, $interval, $end);
$results = [];
foreach ($period as $d) {
$results[$d->format("Y")][] = $d->format("m");
}
return $results;
}
$date1 = new DateTime('2023-02-02 00:00:00');
$date2 = new DateTime('2023-10-03 00:00:00');
$result = getMonths(date1, date2);
var_dump( $result );
Результат:
array (size=1)
2023 =>
array (size=10)
0 => string '02' (length=2)
1 => string '03' (length=2)
2 => string '04' (length=2)
3 => string '05' (length=2)
4 => string '06' (length=2)
5 => string '07' (length=2)
6 => string '08' (length=2)
7 => string '09' (length=2)
8 => string '10' (length=2)
9 => string '11' (length=2)
Как получить dropped элемент jQuery (Drag-and-drop)
Пример, как получить кинутый элемент на jQuery droppable.
HTML:
<div class="droppable">test</div>
JQuery:
$( ".droppable" ).droppable({
drop: function( event, ui ) {
var droppedElement = ui.draggable;
//droppedElement - это элемент, который кинули на данный блок
}
});
Единственное, надо еще прописать сам draggable элемент, который будут перетаскивать.
Как получить текущую дату JavaScript отформатированную в нужном формате
Как получить текущую дату с помощью JavaScript, и потом отформатировать ее:
let today = new Date();
let year = today.getFullYear();
let month = today.getMonth() + 1; // + 1 т.к. нумерация с 0
let day = today.getDate();
if (day < 10) day = '0' + day; // чтобы были нули спереди в числах до 10
if (month < 10) month = '0' + month ;
let finalDate = day + '.' + month + '.' + year; // в формате dd.mm.yyyy
console.log(finalDate );
Сколько стоит электронная виза в Россию?
Точная стоимость электронной визы в Россию составляет 52 USD.
Почему-то на официальном сайте пока что цена не указана, чтобы увидеть конечную сумму необходимо сначала заполнить длинную анкету, возможно позднее это будет исправлено.
Заявления на визы стали принимать с 1 августа 2023 года.
Оплата производится с помощью банковских карт, принимаются карты иностранных государств ( оплата идет через Amazon Payment services).
Как узнать историю изменения файла в Git
Полную историю изменения файла (в том числе и удаленного) можно узнать, используя данную команду:
git log --all --full-history -- "file_path"
Где file_path - путь до файла.
Пример:
git log --all --full-history -- "temp/test.php"
MySQL: как удалить записи из таблицы, ID которых нет в другой таблице
Допустим есть 2 таблицы:
Первая table1:
- id
- name
Вторая table2:
- id
- table1_id
И нам надо удалить из первой таблицы записи, которые ни разу не встречаются во второй таблице в колонке table1_id.
SQL:
DELETE a FROM table1 a
LEFT JOIN table2 b ON a.id = b.table1_id
WHERE b.table1_id IS NULL
Ошибка - у Worksheet нет метода getDefaultStyle() в PhpSpreadsheet
Если вы ищете как установить стиль по умолчанию к Worksheet, то это можно сделать так:
$worksheet->getParent()->getDefaultStyle()->applyFromArray($defaultParameters);
Где $defaultParameters - массив с вашими настройками по умолчанию.
В данном случае надо вызывать функцию getDefaultStyle не у самой Worksheet, а сначала получив родительский класс с помощью getParent.
Как сделать, чтобы можно было просмотреть локальные изменения Git в PhpStorm (вкладка local changes)
При новой установке PhpStorm столкнулась с проблемой, что отсутствует привычная вкладка Local changes, где можно просмотреть все изменения, которые еще не закоммичены.
Как ее вернуть:
Открыть File - > Settings
В пункте Version control → Commit снять галку с пункта Use non-modal commit interface.
Что делать, если Google Chrome не синхронизирует аккаунт
Появилась такая проблема - после установки новой системы и нового браузера в Google Chrome на странице синхронизации можно найти такую надпись: “Sync Please wait…”, но ничего не происходит, никакой синхронизации нет.
Возможное решение:
В данном случае помогло проверить hosts файл (C:\Windows\System32\Drivers\etc\hosts).
Оказалось, что в его конец были добавлены строки:
127.0.0.1 clients.google.com
127.0.0.1 clients0.google.com
127.0.0.1 clients1.google.com
127.0.0.1 clients2.google.com
127.0.0.1 clients3.google.com
127.0.0.1 clients4.google.com
127.0.0.1 clients5.google.com
127.0.0.1 clients6.google.com
127.0.0.1 clients7.google.com
127.0.0.1 clients8.google.com
127.0.0.1 clients9.google.com
Таким образом google просто не мог ничего скачать.
Помогло просто удаление этих строк из данного файла.
Как очистить кеш обновлений в windows с помощью командной строки
Запустите командную строку с правами администратора.
Затем введите по очереди команды:
net stop wuauserv
cd C:\Windows\SoftwareDistribution
del /f /s /q Download
net start wuauserv
Как проверить, зарегистрирован ли домен (PHP)
Для проверки, зарегистрировано ли доменное имя, можно использовать стандартную функцию PHP - checkdnsrr с параметром ANY.
Смысл такой - если найдена хотя бы одна любая запись DNS, то домен зарегистрирован.
Пример:
if ( checkdnsrr('podelitsa.ru', 'ANY') ) {
echo "Запись DNS найдена - домен зарегистрирован";
} else {
echo "Нет записей DNS - домен не зарегистрирован";
}