Чтобы заменить точку на запятую или запятую на точку, в javaScript достаточно несколько строк кода. 

Пример замены запятой на точку: 

var text =  "123,55";
var converted = text.replace(/\,/g, '.');
//результат 123.55

Пример замены точки на запятую: 

var text =  "123.55";
var converted = text.replace(/\./g, ',');
//результат 123,55

Есть простой способ, чтобы добавить к элементам autocomplete title. Это может пригодится, если вы к примеру в самом списке показываете сокращенные названия предметов, а при наведении мыши хотите чтобы было показано развернутое описание. 

Как сделать autocomplete описано в этой статье:


Сейчас мы рассмотрим только то, как добавить title к результатам выдачи из предыдущего примера.

...

Разберемся, как добавить в форму autocomplete с загрузкой данных с помощью ajax.

Для начала добавьте на страницу jQuery & jQuery ui

Допустим, у вас есть input с классом autocomplete-field, к которому как раз хотите добавить автозаполнение:

<input type="text" class="autocomplete-field" name="test" value="" />
...

Иногда необходимо передать файл с помощь curl, но при этом изменить его название. 

Это можно сделать, используя функцию setPostFilename для отправляемого CURLFile:

$filePath = 'путь до файла';
$cFile = new CURLFile($filePath);
$cFile->setPostFilename('new_name.doc');

Чтобы получить расширение файла в PHP не нужно выдумывать никакую обработку его названия / пути. Достаточно применить встроенную функцию pathinfo:

 $filePath = 'путь_до_файла/document.doc'
$info = pathinfo($filePath, PATHINFO_EXTENSION);
var_dump($info); // doc

Бывает ситуация, когда к примеру событие click (или любое другое) не срабатывает.

Чаще всего это происходит потому что элемент, к которому это событие привязано, создался динамически (его не было на момент загрузки страницы, а потом элемент добавили с помощью скриптов).

Рассмотрим на примере нажатия click. Стандартно это событие в jQuery можно записать так:

$(".myElement").click(function(e){
//что-то делаем
});

Обычно этого достаточно и код будет работать для всех  .myElement, которые были сформированы при создании страницы. Но если добавить новый элемент с классом .myElement, то на него это не распространится. Выход - записать это событие немного иначе, с корневым элементом, который точно будет присутствовать на странице. Мы возьмем для этих целей тег body (но подойдет и любой другой, который не будет создаваться динамически и который в себе будет содержать новый .myElement:

$('body').on('click','.myElement', function(e){
//что-то делаем
});

Этот код сработает для всех элементов на странице. 

Чтобы  сортировку по дате в DataTable, есть одно простое решение.

Допустим, у вас есть таблица, где колонка с датой записана в таком виде:

<td>15.09.2021, 16:02:26</td>

 По умолчанию DataTable такие колонки будет сортировать с ошибками (как строки). И даже если задать колонке формат даты, все равно содержимое и фильтр будет зависеть от того, в каком формате у вас записана дата. 

Проще всего перед вашей датой добавить скрытый span с той же датой, но в формате timestamp:  

<td><span style="display: none;">1631624546</span>14.09.2021, 16:02:26</td>

В таком случае колонка будет автоматически сортироваться сначала по этому скрытому полю, никакого js дополнительно использовать не надо (тег style применен для наглядности, лучше применить к span class,  у которого в css будет прописан соответствующий стиль видимости). 

Чтобы установить аватарку для ранее созданного вами бота Telegram, необходимо предпринять несколько простых шагов.

  1. Открыть час с @BotFather (где вы создавали своего бота)
  2. Отправить в чат команду /setuserpic
  3. Выбрать бота из предложенного списка
  4. Загрузить в чат фото

Через несколько секунд картинка обновится. 

Бывают ситуации, когда с конца строки необходимо обрезать какой-либо символ.

Для этого подойдет функция  rtrim 

 $url = 'http://podelitsa.ru/';
$result = rtrim($url, '/');
// результат - http://podelitsa.ru

первый параметр - сама строка, второй - символы, которые необходимо удалить. Если второй параметр не указан - будут удаляться пробелы, табуляция и тд. 

Простой код, позволяющий отправить документ  в чат Телеграм (от бота):

public function sendDocument($chatID, $file){
$apiKey = 'ваш ключ';
$url = "https://api.telegram.org/bot" .
$apiKey . "/sendDocument?chat_id=" . $chatID;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);


$cFile = new CURLFile($file);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
"document" => $cFile
]);

$result = curl_exec($ch);
curl_close($ch);
}

Где {api-key} - это api ключ, который вы получили при регистрации бота.

{chat-id} - id чата с пользователем. Для того, чтобы получить этот id пользователь должен сам инициировать разговор с ботом, отправив ему /start (сейчас мы подразумеваем, что этот id у вас есть).

$file - путь до файла, который необходимо отправить.

Если у вас есть Telegram  бот и вам необходимо отправить сообщение в чат пользователю, то для этого используется метод sendMessage.

Простейший запрос будет выглядеть так:

https://api.telegram.org/bot{api-key}/sendMessage?chat_id={chat-id}&text=test

Где {api-key} - это api ключ, который вы получили при регистрации бота.

{chat-id} - id чата с пользователем. Для того, чтобы получить этот id пользователь должен сам инициировать разговор с ботом, отправив ему /start (сейчас мы подразумеваем, что этот id у вас есть).

text - отправляемый текст сообщения. 

И {api-key} и  {chat-id} указываются без скобок. Между /bot и ключом не нужно никаких разделителей или слешей.

Каким именно способом вы осуществляете переход по данной ссылке не имеет значения, тут приведем пример с помощью curl:

function sendMessage($chatID, $message = 'тест')
{
$apiKey = 'ваш ключ';

$url = "https://api.telegram.org/bot" .
$apiKey . "/sendMessage?chat_id=" .
$chatID . '&text=' . urlencode($message);

$ch = curl_init();
$options = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
curl_close($ch);

return $result;
}

Как параметры в функцию подаются $chatID - ID чата с пользователем, $message - текст отправляемого сообщения

Бывает такая ситуация, когда вы применяете к элементу отступ margin… но визуально ничего не меняется. 

Самая простая причина, почему отступ может не срабатывать - это потому что вы пытаетесь применить его к inline элементу (к примеру к span или к ссылке a). Бывают и другие причины, но проверить сначала лучше эту.

Как исправить : достаточно применить к элементу display: inline-block или display:  block  

Пример: 

Отступ не сработает:
<a style="margin-top: 20px;" href="#">Ссылка</a>
Сработает:
<a style="display: inline-block; margin-top: 20px;" href="#">Ссылка</a>

Сделать это достаточно просто, для этой цели в PHP предусмотрена стандартная функция ucwords

$string  = "это тестовая строка";
$result = ucwords($string);
echo $result; // Это Тестовая Строка

Чтобы прибавить или отнять у объекта в формате DateTime несколько часов (PHP), можно использовать modify.

Отнять 2 часа (от текущего времени):

$result = (new DateTime('now'))->modify('-2 hours');

Прибавить час:

$result = (new DateTime('now'))->modify('+1 hours');

Отнять день:

$result = (new \DateTime())->modify('-1 day');

Полный пример: 

$date = new DateTime('2021-09-09');
$date->modify('+1 day');
echo $date->format('Y-m-d');

Выведет результат 2021-09-10

Для получения готовой корочки вида на жительство (когда все документы уже поданы и приняты, и надо лишь забрать результат) будет необходим:

  1. Паспорт и нотариальный перевод паспорта (его не забирают т.к. другой перевод был уже предоставлен ранее)
  2. Бумага, которую вам выдали в момент принятия заявления, подтверждающая что документы были поданы
  3. Старый ВНЖ (при замене, если замена была по причине окончания сроков действия / замены на бессрочный)

Предварительная запись не требуется (если получаете в Сахарово). Перед получением лучше уточнить готовность на сайте МВД.

Бывает и так, что документы давно готовы, но на портале МВД нет сведений о готовности (не обновили статус). В таком случае необходимо также ехать лично и узнавать (лучше сразу с документами на получение - в случае готовности сможете сразу и получить документ). 

Как известно, у обладателей вида на жительства в России есть обязанность по истечению каждого года с момента его получения проходить процедуру подтверждения. 

На эту процедуру дается 2 месяца от даты получения ВНЖ (первое подтверждение нужно делать спустя год после получения). 

Бывает, что эта дата выпадает на очень не удобный участок времени. 

На вопрос “как поменять эту дату” - вы получите однозначный ответ, что сделать это нельзя. В интернете ходит мнение, что даже при замене ВНЖ дата будет взята от самой первой даты принятия решения. На самом деле все не совсем так.

Если поменять книжку ВНЖ - то дата выдачи уже будет стоять другой, и теперь уже отсчет пойдет именно от этой даты выдачи нового документа. Так ответили в МВД, но на всякий случай уточняйте данную информацию и у своих инспекторов.  

Бывают ситуации, когда есть файл в формате pdf и его необходимо отобразить в браузере (без мгновенного скачивания в виде файла, именно открыть браузером). 

Сделать это можно с помощью данного кода:

$fileContent = //содержимое pdf  предполагается, что у вас есть готовый pdf файл 
$filename = 'myFileName.pdf';
header('Content-Type: application/pdf');
header('Content-Length: '.strlen( $fileContent ));
header('Content-disposition: inline; filename="' . $filename . '"');
header('Cache-Control: public, must-revalidate, max-age=0');
header('Pragma: public');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
echo $fileContent;

Примечания:

  1. Код должен быть выведен в браузер до отправки каких-либо заголовков или html
  2. $fileContent - это готовый pdf файл, который загружен в переменную или из файла / из базы / создан. В рамках этой статьи не будем углубляться в подробности, откуда у вас этот файл.
  3. $filename - как будет называться по умолчанию файл, если пользователь захочет его сохранить

Если не задать в Libphonenumber регион по умолчанию, как это приведено в документации, то может вылезти ошибка “missing or invalid default region”. 

Но иногда мы не знаем, какой регион могут ввести и у нас нет региона по умолчанию. 

В этом случае ошибку легко устранить, подавая на проверку телефон в международном формате (к примеру, добавив в начало номера “+”).

К примеру:

$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
$numberStr = "+79885211311"; //сработает
//$numberStr = "79885211311"; //не сработает
try {
$res = $phoneUtil->parse($numberStr);
var_dump($res);
} catch (\libphonenumber\NumberParseException $e) {
var_dump($e);
}

При создании DataTable если не указать иначе, то автоматически колонки будут сортироваться по содержимому первой колонки.

Иногда это не удобно и необходимо оставить изначальную сортировку в том виде, в каком данные у нас есть.

Для этого при инициализации  DataTable нужно просто добавить пустой массив order, к примеру:

$("#myTable").DataTable(
{
order: []
}
);