Ответы пользователя по тегу PHP
  • Как запустить fusionbrain api на php?

    Fernus
    @Fernus
    Техник - Механик :)
    <?php
    
    // ...
    
    $data = [
                'params' => json_encode([
                    "type" => "GENERATE",
                    "numImages" => 1,
                    "width" => 1024,
                   "height" => 1024,
                    'generateParams' => [
                        'query' => 'море'
                    ]
                ]),
                'model_id' => '4'
            ];
    
    // ...
    
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
                'X-Key: Key '.$xKey,
                'X-Secret: Secret '.$xSecret,
                'Content-Type: application/json' // <--- !!!
            ]);
    
    // ...
    
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    // ...


    p.s. Я так понимаю из python кода он хочет мультипарт, но не понимаю как подобное реализовать в php


    # ...
    
    data = {
    		'model_id': (None, model),
    		'params': (None, json.dumps(params), 'application/json') # ??? !!!
    	}
    
    # ...


    P.S.: Это как минимум...
    P.S.S.: Затупил я немного...короче...заголовок добавь нужный...
    Ответ написан
  • Что будет с чтением ресурса если вызвать sleep?

    Fernus
    @Fernus
    Техник - Механик :)
    UDP-сокеты иногда могут открываться без ошибки, даже если удалённый хост недоступен. Ошибка станет заметной только когда вы будете читать или писать данные из/в сокет. Причина этого в том, что UDP - это протокол без соединения, что означает, что операционная система не пытается установить соединение с сокетом до тех пор, пока ей в действительности не нужно отправить или получить данные.


    ^^^ Исходя из этого...ты просто "подождёшь" 5 сек и "не накопишь" данные для "чтения" - тобишь продолжишь читать с того же места, где остановился...а остановился ты 5 сек "назад"...

    P.S.: Ну это моё понимание...
    Ответ написан
    Комментировать
  • Как найти совпадения в бд?

    Fernus
    @Fernus
    Техник - Механик :)
    <?php
    
    $isStop = SpamWord::whereRaw("? RLIKE CONCAT('[[:<:]]', `word`, '[[:>:]]')", [$text])->exists();
    
    if($isStop) {
    
        // Есть плохое слово
    
    }


    P.S.: Ниже правильно советуют...собрать все слова в "шаблоны" и не дёргать БД каждый раз...
    А касаемо вопроса - должно работать и так :)
    Ответ написан
    Комментировать
  • Получить полный URL до папки?

    Fernus
    @Fernus
    Техник - Механик :)
    <?php
    
    $url = 'https://site.ru/folder/dex/index.php';
    
    $url_dirname = dirname($url);
    
    print_r($url_dirname); // https://site.ru/folder/dex
    Ответ написан
    4 комментария
  • Как получить все значения из вложенных массивов по ключу?

    Fernus
    @Fernus
    Техник - Механик :)
    <?php
    
    $datapost = array(
      array(
        'header' => 'город Москва',	
        'category_id' => '1',
      ),
      array(
        'header' => 'село Огонёво',	
        'category_id' => '2',
      ),
      array(
        'header' => 'село Быстрино',	
        'category_id' => '2',
      ),
      array(
        'header' => 'посёлок Восточный',	
        'category_id' => '7',
      ),
    );
    
    $query = mysqli_query($connect, "SELECT `id` FROM `category` ");
    $rows = mysqli_fetch_all($query, MYSQLI_ASSOC);
    
    $arIDs = [];
    
    foreach($rows as $row) {
        $arIDs[$row['id']] = $row['id'];
    }
    
    $arResults = [];
    
    foreach($datapost as $data) {
    
        if(array_key_exists($data['category_id'], $arIDs))
            $arResults[$data['category_id']][] = $data;
    
    }
    
    print_r($arResults);
    Ответ написан
  • Как заменить все вхождения символа на различные значения не прибегая к циклам?

    Fernus
    @Fernus
    Техник - Механик :)
    <?php
    
    $MASK = '+7(%d%d%d)%d%d%d-%d%d-%d%d';
    $VALUE = '1234145577';
    $arValues = str_split($VALUE, 1);
    
    $RESULT = sprintf($MASK, ...$arValues);
    
    print_r($RESULT); // +7(123)414-55-77
    Ответ написан
    Комментировать
  • Почему мой генератор не работает?

    Fernus
    @Fernus
    Техник - Механик :)
    str_replace на preg_replace с доп. параметром заменить...

    $promo_mask = 'XXXX-5555-XXXX-5555';
    $mask_count = substr_count($promo_mask, 'X');
    $promo = $promo_mask;
    
      $chars = '12345ABCDEFGHIJKLMNOPQRSTUVWXYZ67890';
      $hashpromo = '';
      for($ichars = 1; $ichars <= $mask_count; ++$ichars) {
        	$random = str_shuffle($chars);
        	$promo = preg_replace('/X/', $random[$ichars], $promo, 1);
      }
      echo $promo;
    Ответ написан
    Комментировать
  • Как реализовать такую обработку CSV?

    Fernus
    @Fernus
    Техник - Механик :)
    Вот вариант, который будет работать при любом порядке категорий...
    Оптимизировать/укоротить код - это уже Вам задание :)

    <?php
    
    $TEST_DATA = 'Продукт 1; Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 2; Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 3; Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 4; Воздуховоды/Круглые/Нержавеющие;
    Продукт 5; Воздуховоды/Круглые/Нержавеющие;
    Продукт 6; Воздуховоды/Круглые/Нержавеющие;';
    
    $TEST_DATA2 = 'Продукт 1; Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 2; Воздуховоды/Круглые/Нержавеющие;
    Продукт 3; Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 4; Воздуховоды/Круглые/Нержавеющие;
    Продукт 5; Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 6; Воздуховоды/Круглые/Нержавеющие;';
    
    $arData = array_map(function($val) {
        return array_filter(array_map('trim', explode(';', $val)));
    }, preg_split('#[\r\n]#isu', $TEST_DATA, -1, PREG_SPLIT_NO_EMPTY));
    
    /* Всё, что выше - к задаче не относится...имитация получения данных из CSV... */
    
    $arRes = [];
    
    foreach($arData as $data) {
        
        $arCategories = array_filter(array_map('trim', explode('/', $data[1])));
        
        $MAIN_CATEGORY = array_shift($arCategories);
        
        $HASH = md5(implode('/', $arCategories));
        
        $arRes[$MAIN_CATEGORY][$HASH][] = [
                'product_name' => $data[0],
                'category' => $data[1],
                'category_items' => $arCategories
            ];
        
    }
    
    $HASH = false;
    
    foreach($arRes as $main_category => $arSubCategories) {
        
        echo $main_category."\r\n";
        
        foreach($arSubCategories as $h => $arItems)
            foreach($arItems as $item) {
                
                if($HASH != $h) {
                    
                    $HASH = $h;
                    
                    foreach($item['category_items'] as $k => $category) {
                    
                        $k++;
                            
                        echo str_repeat('!', $k).$category."\r\n";
                    
                    }
                    
                }
                
                echo $item['product_name'].';'.$item['category'].';'."\r\n";
                
            }
        
    }
    
    /* RESULT:
    
    Воздуховоды
    !Прямоугольные
    !!Оцинкованные
    Продукт 1;Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 2;Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 3;Воздуховоды/Прямоугольные/Оцинкованные;
    !Круглые
    !!Нержавеющие
    Продукт 4;Воздуховоды/Круглые/Нержавеющие;
    Продукт 5;Воздуховоды/Круглые/Нержавеющие;
    Продукт 6;Воздуховоды/Круглые/Нержавеющие;
    
    */


    UPD:
    Вариант с одним циклом с учётом того, что категории уже отсортированы:
    <?php
    
    $TEST_DATA = 'Продукт 1; Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 2; Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 3; Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 4; Воздуховоды/Круглые/Нержавеющие;
    Продукт 5; Воздуховоды/Круглые/Нержавеющие;
    Продукт 6; Воздуховоды/Круглые/Нержавеющие;';
    
    $arData = array_map(function($val) {
        return array_filter(array_map('trim', explode(';', $val)));
    }, preg_split('#[\r\n]#isu', $TEST_DATA, -1, PREG_SPLIT_NO_EMPTY));
    
    /* Всё, что выше - к задаче не относится...имитация получения данных из CSV... */
    
    $VAR = false;
    $VAR2 = false;
    
    foreach($arData as $data) {
        
        $arCategories = array_filter(array_map('trim', explode('/', $data[1])));
            
        $MAIN_CATEGORY = array_shift($arCategories);
        
        if($VAR !== $MAIN_CATEGORY) {
            
            $VAR = $MAIN_CATEGORY;
            
            echo $MAIN_CATEGORY."\r\n";
            
        }
        
        $CATEGORIES = implode('/', $arCategories);
        
        if($VAR2 !== $CATEGORIES) {
            
            foreach($arCategories as $k => $category) {
                    
                $k++;
                    
                echo str_repeat('!', $k).$category."\r\n";
                    
            }
            
            $VAR2 = $CATEGORIES;
            
        }
        
        echo $data[0].';'.$data[1].';'."\r\n";
    
    }
    
    /* RESULT:
    
    Воздуховоды
    !Прямоугольные
    !!Оцинкованные
    Продукт 1;Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 2;Воздуховоды/Прямоугольные/Оцинкованные;
    Продукт 3;Воздуховоды/Прямоугольные/Оцинкованные;
    !Круглые
    !!Нержавеющие
    Продукт 4;Воздуховоды/Круглые/Нержавеющие;
    Продукт 5;Воздуховоды/Круглые/Нержавеющие;
    Продукт 6;Воздуховоды/Круглые/Нержавеющие;
    
    */
    Ответ написан
  • Как отсортировать строчку состоящую из цифр с разделителем?

    Fernus
    @Fernus
    Техник - Механик :)
    Чёт не понял...так не канает?

    <?php
    
    $ar = [
        '10/22/300',
        '10/21/300',
        '9/5/5/6'
        ];
    
    natsort($ar);
    
    print_r($ar);
    
    /* RESULT
    
    Array
    (
        [2] => 9/5/5/6
        [1] => 10/21/300
        [0] => 10/22/300
    )
    
    */
    Ответ написан
    2 комментария
  • API прочитать большой JSON файл?

    Fernus
    @Fernus
    Техник - Механик :)
    Если скачать файл и "положить" локально на сервер, то file_get_contents 99.9% справится с этой задачей...

    Тогда, как вариант:

    1. На крон вешаем команду wget, например, раз в сутки или сколько там Вам надо:
    wget -P /save/to/folder/file.json http://site.ru/file.json

    2. Далее по Вашей текущей схеме через file_get_contents, но с файлом сохранённым локально на сервере...
    Ответ написан
  • Как открыть файл xlsx в wordpress?

    Fernus
    @Fernus
    Техник - Механик :)
    Ответ написан
    Комментировать
  • Как правильно вписать переменные в массив?

    Fernus
    @Fernus
    Техник - Механик :)
    <?php
    
    $allowedDomains = [
      $site_subdomen_domen,
      $site_name_url
    ];
    Ответ написан
    1 комментарий
  • Как сравнить несколько массивов и вернуть общее значение в php?

    Fernus
    @Fernus
    Техник - Механик :)
    Как вариант для понимания логики...

    <?php
    
    $ar1 = [
            [28],
            [28, 29]
        ];
        
    $ar2 = [28, 29];
    
    $arRes = [];
    $arResult = [];
    
    foreach($ar1 as $arItems) {
        
        foreach($arItems as $item) {
            
            if(in_array($item, $ar2))
                if(!isset($arRes[$item]))
                        $arRes[$item] = 1;
                    else
                        $arRes[$item]++;
            
        }
        
    }
    
    $allAr1 = count($ar1);
    
    foreach($arRes as $k => $v)
        if($v >= $allAr1)
            $arResult[] = $k;
            
    print_r($arResult);
    Ответ написан
    1 комментарий
  • Как сравнить строки?

    Fernus
    @Fernus
    Техник - Механик :)
    <?php
    
    // Если прям банально...то так тупо можно:
    
    
    // ВАРИАНТ 1
    $str = str_replace('х', 'x', '6x6'); // В первом случае "х" - русская, во втором - английская
    // И в запросе:
    $sql =  "SELECT * FROM `table` WHERE REPLACE(`field`, 'х', 'x') = '".$str."'"; // В первом случае "х" - русская, во втором - английская
    
    // ВАРИАНТ 2
    //В запросе:
    $sql =  "SELECT * FROM `table` WHERE REPLACE(`field`, 'х', 'x') = REPLACE('6x6', 'х', 'x')"; // В первом случае "х" - русская, во втором - английская
    
    // P.S.: Не указано какая БД...я отталкивался от MySQL, если что...
    Ответ написан
    Комментировать
  • Как работать с таким форматом даты в PHP?

    Fernus
    @Fernus
    Техник - Механик :)
    <?php
    
    print_r(date('d.m.Y H:i:s', strtotime('2021-05-18T15:30:00.000-04:00')));
    Ответ написан
    Комментировать
  • Как отнять от текущей даты 30 дней?

    Fernus
    @Fernus
    Техник - Механик :)
    1. Работа с датой и временем в Laravel и PHP с помощь...
    2. Carbon. Документация.

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

    Теперь "проблем" быть не должно...
    Ответ написан
    Комментировать
  • Как ускорить обработку 200 curl запросов?

    Fernus
    @Fernus
    Техник - Механик :)
    Ответ написан
    Комментировать
  • Не получается сделать регулярное выражение php?

    Fernus
    @Fernus
    Техник - Механик :)
    <?php
    
    $str = '2021-02-25 - 2021-02-27';
    
    preg_match_all('#\d{4}-\d{1,2}-\d{1,2}#isu', $str, $arRes);
    
    print_r($arRes);
    Ответ написан