Задать вопрос
  • Как настроить в php скачивание wav файла?

    @tatarrr95 Автор вопроса
    Решил свою проблему следующим кодом.
    $url = "http://ссылка_на_другом_сайте.ru";
        $file=file_get_contents($url);
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename=test.wav');
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        // header('Content-Length: ' . filesize($file));
        header('Content-Length: ' . strlen($file));
        echo $file;
    Ответ написан
    Комментировать
  • Чат-бот для WABA через GupShup.io или открытых линий Битрикс24?

    @tatarrr95
    Aimylogic
    Ответ написан
    Комментировать
  • Как на сайте отловить был переход с ограники, с рекламы или по прямой ссылке (без UTM-меток)?

    @tatarrr95
    Я делаю следующим образом. При заходе пользователя на сайт я проверю, есть ли у него utm-метка. Если нету, проверяю через javascript, чему равно поле referrer. Если referrer = yandex.ru или google.com - значит органика. Также через это поле проверяю еще важные мне источники. Дальше эту инфу добавляешь к себе в форму в скрытые поля и они будут отправляться в crm.

    Лично у меня интеграция тильды с битриксом. Для сквозной аналитики битриксу проще понимать информацию об источниках из ютм меток. Данные ютм меток тильда пишет в куки и передает куки в битрикс. Тоесть чтобы у меня была красивая сквозная аналитика, я делаю так:
    function set_cookie ( name, value, exp_y, exp_m, exp_d, path, domain, secure ){
            var cookie_string = name + "=" + escape ( value );
            if ( exp_y )
            {
            var expires = new Date ( exp_y, exp_m, exp_d );
            cookie_string += "; expires=" + expires.toGMTString();
            }
            if ( path )
                cookie_string += "; path=" + escape ( path );
            if ( domain )
                cookie_string += "; domain=" + escape ( domain );
            if ( secure )
                cookie_string += "; secure";
            document.cookie = cookie_string;
        }
        function get_cookie ( cookie_name ){
            var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
            if ( results )
                return ( unescape ( results[2] ) );
            else
                return null;
        }
        
        $(document).ready(function() {
            ref = null;
            if (document.referrer) {
               url = document.referrer; 
               ref = url.match(/:\/\/(.[^/]+)/)[1];
            }
            if(ref){
                if (!get_cookie("TILDAUTM")){
                    var current_date = new Date;
                    var cookie_year = current_date.getFullYear()+1;
                    var cookie_month = current_date.getMonth();
                    var cookie_day = current_date.getDate()+1;
                    set_cookie ( "TILDAUTM", "utm_source="+ref+"|||", cookie_year, cookie_month, cookie_day );
                }
            }
        });


    Потом в сквозной аналитике добавляю источники нужные мне (органика гугла, яндекса и. т.д.) и все.
    Ответ написан
    Комментировать
  • Как в visual studio code в файле заменить двойной пробел на табуляцию?

    @tatarrr95 Автор вопроса
    Решил вопрос следующим способом, внизу справа было написано 2 spaces, нажал туда, конвертировал в табуляцию и там же поменял размер табуляции для файла.
    Ответ написан
    Комментировать
  • Существует ли в открытом доступе нейронная сеть для чатбота (ChatBot)?

    @tatarrr95
    dialogflow
    Ответ написан
    Комментировать
  • Почему пробелы заменяются на + в CURL POST JSON?

    @tatarrr95 Автор вопроса
    Решил проблему тем, что в нужном тексте заменил все пробелы %20. На принимающей стороне пришли пробелы.
    Ответ написан
    Комментировать
  • Как реализовать на PHP: позиции двух соседних номеров показываются программой через пять показов других номеров?

    @tatarrr95
    $array = [1,2,3,4,5,6,7,8,9,10,11,12];
    $a = array_fill(0, count($array)/2, '');
    $answer = array_fill(0, count($array), '');
    $j=0;
    for($i=0; $i<count($array); $i+=2){
        $a[$j] = [$array[$i], $array[$i+1]];
        $j++;
    }
    for($i=0; $i<count($a); $i++){
        $answer[$i] = $a[$i][0];
        $answer[$i+6] = $a[$i][1];
    }
    print implode(", ", $answer);
    Ответ написан
    Комментировать
  • Как вытащить дату из текста?

    @tatarrr95 Автор вопроса
    Написал функцию php, решающую мою задачу без нейросетей. Существуют варианты дат, которые невозможно распознать однозначно, тогда возвращается два варианта даты.

    function dateBirth($inputString){
                $inputString = str_replace(" январ", " 01", $inputString);
                $inputString = str_replace(" феврал", " 02", $inputString);
                $inputString = str_replace(" март", " 03", $inputString);
                $inputString = str_replace(" апрел", " 04", $inputString);
                $inputString = str_replace(" май", " 05", $inputString);
                $inputString = str_replace(" мая", " 05", $inputString);
                $inputString = str_replace(" мае", " 05", $inputString);
                $inputString = str_replace(" июн", " 06", $inputString);
                $inputString = str_replace(" июл", " 07", $inputString);
                $inputString = str_replace(" август", " 08", $inputString);
                $inputString = str_replace(" сентябр", " 09", $inputString);
                $inputString = str_replace(" октабр", " 10", $inputString);
                $inputString = str_replace(" ноябр", " 11", $inputString);
                $inputString = str_replace(" декабр", " 12", $inputString);
                $inputString = preg_replace('/\D/', '', $inputString);
                $year = "error";
                $daymonth = "";
                // Если длина строки больше 8 или меньше 4, вычислить дату не сможем
                if(strlen($inputString) < 4 || strlen($inputString) > 8){
                    return false;
                    
                }
                if(strlen($inputString) >= 6){ // если длина больше или равна 6, то год равен 4 числам
                    if(intval(substr($inputString, -4)) > 1920){ //4 последних числа должны быть больше 1920, иначе это не год
                        $year = substr($inputString, -4);
                        $daymonth = substr($inputString, 0, -4);
                    }
                    if(strlen($inputString) == 6){ //если прошлое не год, значит год состоит из двух чисел, но тогда длина все строки не может быть длинее 6
                        if(intval("19".substr($inputString, -2)) > 1920){ //Проверяем, больше ли эти два числа чем 1920
                            $year = "19".substr($inputString, -2);
                            $daymonth = substr($inputString, 0, -2);
                        }
                    }
                }
                else{
                    if(intval("19".substr($inputString, -2)) > 1920){ //Если длина меньше 6, значит год из двух числел
                        $year = "19".substr($inputString, -2); //проверяем, больше ли год чем 1920
                        $daymonth = substr($inputString, 0, -2);
                    }
                }
                // ищем день и месяц
                if($year != "error"){
                    if(strlen($daymonth) == 4 || strlen($daymonth) == 2){ //если деньмесяц состоит из 2 или 4 чисел. бьем строку пополам и получаем день + месяц
                        $day = substr($daymonth, 0, -strlen($daymonth)/2);
                        $month = substr($daymonth, -strlen($daymonth)/2);
                    }
                    // Если деньмесяц состоит из 3 чисел, то сложно
                    if(strlen($daymonth) == 3){
                        // Если первый 0, то день полюбому состоит из двух цифр
                        if(substr($daymonth, 0, 1) == "0"){ 
                            $day = substr($daymonth, 0, 2);
                            $month = substr($daymonth, -1);
                        }
                        // Если по середине 0, 1, 2 , то поулучается вилка, возвращаем сразу 2 вариианта
                        else if(substr($daymonth, 1, 1) == "0" || substr($daymonth, 1, 1) == "1" || substr($daymonth, 1, 1) == "2"){
                            $day = [substr($daymonth, 0, 1), substr($daymonth, 0, 2)]; //массив двух варантов дней
                            $month = [substr($daymonth, 1, 2), substr($daymonth, 2, 1)]; //массив двух вариантов месяцев
                            // проверяем, корректные ли дни и месяцы в массиве. Если нет, то превращаем массивы в немассивы без некорректных данных. Чтобы этим способом не проверить немассив, проверяем, массив ли это
                            if((intval($day[0]) > 31 || intval($month[0]) > 12 || intval($day[0]) == 0 || intval($month[0]) == 0) && is_array($day) && is_array($month)){
                                $day = $day[1];
                                $month = $month[1];
                            }
                            if((intval($day[1]) > 31 || intval($month[1]) > 12 || intval($day[1]) == 0 || intval($month[1]) == 0) && is_array($day) && is_array($month)){
                                $day = $day[0];
                                $month = $month[0];
                            }
                        }
                        // Если по середине 3
                        else if(substr($daymonth, 1, 1) == "3" && (substr($daymonth, 2, 1) == "1" || substr($daymonth, 2, 1) == "0")){
                            $day = [substr($daymonth, 0, 1), substr($daymonth, 0, 2)]; //массив двух варантов дней
                            $month = [substr($daymonth, 1, 2), substr($daymonth, 2, 1)]; //массив двух вариантов месяцев
                            // проверяем, корректные ли дни и месяцы в массиве. Если нет, то превращаем массивы в немассивы без некорректных данных. Чтобы этим способом не проверить немассив, проверяем, массив ли это
                            if((intval($day[0]) > 31 || intval($month[0]) > 12 || intval($day[0]) == 0 || intval($month[0]) == 0) && is_array($day) && is_array($month)){
                                $day = $day[1];
                                $month = $month[1];
                            }
                            if((intval($day[1]) > 31 || intval($month[1]) > 12 || intval($day[1]) == 0 || intval($month[1]) == 0) && is_array($day) && is_array($month)){
                                $day = $day[0];
                                $month = $month[0];
                            }
                        }
                        // Теперь просто двигаем точку с одного места ну другое проверяя, меньше ли день 31 и месяц 12. Если попали то круть
                        else{
                            // проверяем корректность данных при передвижении
                            if(intval(substr($daymonth, 0, 2)) <= 31 && intval(substr($daymonth, 0, 2)) != 0){
                                $day = substr($daymonth, 0, 2);
                                $month = substr($daymonth, -1);
                            }
                            // проверяем корректность данных при передвижении
                            else if(intval(substr($daymonth, 1, 2)) <= 12 && intval(substr($daymonth, 1, 2)) != 0 ){
                                $day = substr($daymonth, 0, 1);
                                $month = substr($daymonth, 1, 2);
                            }
                            else{
                                $day = "error";
                                $month = "error";
                            }
                        }
    
                    }
                }
                $dataBorn = "";
                $format = 'd.m.Y';
                // Если в итоге у нас вернулось 2 варианта даты, работаем с ним
                if(is_array($day) && is_array($month)){
                    $dataBorn = [$day[0].".".$month[0].".".$year , $day[1].".".$month[1].".".$year];
                    $date = [];
                    // пробуем законвертить дату и добавиить в массив, если не получается, значит хуевая дата
                    try{
                        array_push($date, date_create_from_format($format, $dataBorn[0])->format('d.m.Y'));
                        // дополнительно проверяем на ошибки дату Например при конвертациии раньше 31.02.2016 выдавал не ошибку а 02.03.2016
                        if(DateTime::getLastErrors()['warning_count'] > 0) {
                            $date = "error";
                        }
                    }
                    catch (Error $e) {
                        $date = "error";
                    }
                    // пробуем законвертить дату и добавиить в массив, если не получается, значит хуевая дата
                    try{
                        array_push($date, date_create_from_format($format, $dataBorn[1])->format('d.m.Y'));
                        // дополнительно проверяем на ошибки дату Например при конвертациии раньше 31.02.2016 выдавал не ошибку а 02.03.2016
                        if(DateTime::getLastErrors()['warning_count'] > 0) {
                            $date = "error";
                        }
                    }
                    catch (Error $e) {
                        $date = "error";
                    }
                    // Проверяем, остался ли массив после предыдущих манипуляций, и если в нем всего одно значение, переделываем массив в строку
                    if(is_array($date) && count($date) < 2){
                        $date = $date[0];
                    }
                    return $date;
                }
                // Если вернулась всего одна дата
                else{
                    // Проверяем на корректность день месяц
                    if(intval($day) > 31 || intval($month) > 12 || intval($day) == 0 || intval($month) == 0){
                        $day = "error";
                        $month = "error";
                    }
                    $dataBorn = $day.".".$month.".".$year;
                    // Продуем законвертииться в дату, если не получиилось, хуевая дата
                    try {
                        $date = date_create_from_format($format, $dataBorn)->format('d.m.Y');
                        // дополнительно проверяем на ошибки дату Например при конвертациии раньше 31.02.2016 выдавал не ошибку а 02.03.2016
                        if(DateTime::getLastErrors()['warning_count'] > 0) {
                            $date = "error";
                        }
                    } 
                    catch (Error $e) {
                        $date = "error";
                    }
                    return $date;
                }
            }


    Использовать как
    dateBirth("текст текст текст 29.6.95 текст")
    Ответ написан
    Комментировать
  • Куда захостить приложение на php?

    @tatarrr95
    возможно heroku
    Ответ написан
    Комментировать
  • Есть ли в открытом доступе регулярные выражения для перевода текстовых чисел в цифры?

    @tatarrr95 Автор вопроса
    Кому интересно, реализовал просто через dialogflow.
    Ответ написан
    Комментировать
  • Как распознать речь резделяя голоса в одноканальном аудио?

    @tatarrr95 Автор вопроса
    Google speech смог, называется это diarization, прилагаю ссылку на пример, авось кому поможет.
    https://cloud.google.com/speech-to-text/docs/multi...
    Ответ написан
    Комментировать
  • Залипают ли клавиши на macbook pro 2017?

    @tatarrr95
    У меня неделю назад залипла клавиша.Иногда сама отходит и опять через время залипает. MacBook PRO 2017 15 дюймов
    Ответ написан
    Комментировать
  • Не появляется значок "Безопасен", почему (https версия)?

    @tatarrr95
    используй в ссылках вместо "https://" и "http://" просто "//"
    Ответ написан
    Комментировать
  • Статья, где разжеван CSS flexbox?

    @tatarrr95
    Я пользуюсь этой игрой, когда что-то забываю. Очень доходчивая flexboxfroggy.com/#ru
    Ответ написан
    Комментировать
  • Как зайти в админку роутера если забыл пароль?

    @tatarrr95
    На разных моделях роутера есть разные уязвимости. На моем например можно попасть в админку, если набирать конкретные страницы в адресной строке (их надо знать). И правки на них без проблем сохраняются) Погуглите конкретно по своей модели.
    П.с. Нашел, по этой инструкции разобрался со своим роутером, оказывается подойдет и тебе itcom.in.ua/stati/setevye-tekhnologii/246-vzlom-pa...
    Ответ написан