<div class="container">
  <textarea name="" id="" cols="30" rows="10"></textarea>
  <div class="counter">
    <span class="current">0</span> /
    <span class="total">360</span>
  </div>
</div>.container {
  position: relative;
  width: max-content;
}
.counter {
  position: absolute;
  bottom: 5px;
  right: 5px;
}const textarea = document.querySelector('textarea');
const counter = document.querySelector('.current');
const maxlength = 360;
textarea.addEventListener('input', onInput)
function onInput(event) {
	event.target.value = event.target.value.substr(0, maxlength); // обрезаем текст до 360 символов
	const length = event.target.value.length;
	counter.textContent = length;
}1. <a href="tg://user?id=123456789">inline mention of a user</a>' с parse_mode = html
2. [inline mention of a user](tg://user?id=123456789) с parse_mode = MarkdownV2// $arr_showroutes[$arr_showroutes_i] .= $text_to_send . '%0A%0A' . $dop_text;
$arr_showroutes[$arr_showroutes_i] = $text_to_send . '%0A%0A' . $dop_text;$data = array(
    'amount' => array(
        "currency" => 'RUB',
        "value" => '1.00'
    ),
    "comment" => "Подписка на услуги",
    "expirationDateTime" => "$date",
    "customer" => array(
        "phone" => "+7123456789",
        "email" => "mail@yandex.ru",
        "account" => "account-name"
    ),
    "flags" => array(
        "CHECK_CARD" ,
        "BIND_PAYMENT_TOKEN"
    ),
);
$data = json_encode($data); 
  
   
  
  $sum       
  
  switch с переменной $hms, допустим в переменной значение "hms" и сработало первое условие. оно выполнилось, НО тут засада, нет break;, поэтому выполнение кода продолжается дальше. и выполняется дальнейшая проверка условий, но так как их нет, срабатывает default.break;       
  
  CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,private function setOptions(){
        if(empty($this->options))
        {
            $this->options = array(
                    CURLOPT_AUTOREFERER => true,
                    CURLOPT_COOKIESESSION => false,
                    CURLOPT_HTTPGET => true,
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_FOLLOWLOCATION => true,
                    CURLOPT_BINARYTRANSFER => true,
                    CURLOPT_ENCODING => 'gzip,deflate,sdch',
                    CURLOPT_HTTPHEADER => array(
                            'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                            'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3',
                            'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
                            'Cache-Control: max-age=0'
                    ),
                    CURLOPT_USERAGENT => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7'
            );
            
            if($this->cookie){
                $this->options[CURLOPT_COOKIEFILE] = "cookie.txt";
                $this->options[CURLOPT_COOKIEJAR] = "cookie.txt";
            }
        }    
    }