• Как ловить определенные символы в тексте?

    @DanKud
    Если просто чистым перебором массива, без дополнительных функций, то можно так:

    function find($str) {
    	$str = str_split($str);
    	$inc = false; $tempStr = null;
    	foreach($str as $v) {
    		if ($v == '}' && !empty($tempStr)) {
    			$finalArr[] = $tempStr;
    			$inc = false; $tempStr = null;
    		}
    		if ($inc) {
    			if (is_numeric($v)) {
    				$tempStr .= $v;
    			}
    			else {
    				$inc = false; $tempStr = null;
    			}
    		}
    		if ($v == '{') {
    			$inc = true;
    		}
    	}
    	return $finalArr;
    }
    
    $str = '{457}7775 {1.000001 } 32 {98} {+3.14} {12637} 98121';
    
    print_r(find($str));
    Ответ написан
    Комментировать
  • Как извлечь данные из JSON с помощью PHP?

    @DanKud
    JSON это просто формат хранения массива информация. В любом случае максимум, что вы можете сделать с JSON это преобразовать его в массив с которым работает язык. Все остальные задачи по перебору и получению информации делаются уже непосредственно с полученным массивом. Просто делайте перебор массива циклом для получения нужных данных в свой массив:

    $json = json_decode($items, true);
    
    $i = 0;
    foreach ($json as $data) {
        $input_data_array[$i]['dow_file'] = $data['meta_data'][1]['value'];
        $input_data_array[$i]['obj_name'] = $data['meta_data'][2]['value'];
        $input_data_array[$i]['obj_flat'] = $data['meta_data'][3]['value'];
        $input_data_array[$i]['obj_kad'] = $data['meta_data'][4]['value'];
        /* и так далее.. */
        $i++;
    }
    
    print_r($input_data_array);
    Ответ написан
    Комментировать
  • Каким образом можно не дать переменной + rand() не давать обновляться при отправке формы?

    @DanKud
    Во-первых присвойте текущей стране и текущей столице отдельные переменные, а не такие же как у массивов, либо вообще их уберите. А для решения вашей задачи передавайте переменную $rand в $_POST присвоив это значение кнопке или скрытому полю:

    $countries = Array(
      '1' => 'Россия',
      '2' => 'Германия'
    );
    $capitals = Array(
      '1' => 'Москва',
      '2' => 'Берлин'
    );
    
    $rand = rand(1,2);
    
    if(isset($_POST['rand']) && $_POST['answer'] == $capitals[$_POST['rand']]) {
      echo 'Ответ правильный!';
    }

    <form action="" method="POST">
      <p>Назовите столицу <b><?php echo $countries[$rand] ?></b></p>
      <input id="answer" name="answer" placeholder="Ответ..."></input>
      <button type="submit" id="submit" name="rand" value="<?php echo $rand ?>">Отправить</button>
    </form>
    Ответ написан
    1 комментарий
  • Как сделать скрипт в NodeJS из PHP?

    @DanKud
    https://nodejs.org/api/crypto.html

    const crypto = require('crypto');
    
    var login = 'ejd78356@nbzmr.com';
    var pwd = '212121';
    var bytes = pwd+login;
    
    const hash = crypto.createHash('sha256').update(bytes).digest('base64')
    
    console.log(hash);
    Ответ написан
    Комментировать
  • Как найти общие подстроки в нескольких строках на JavaScript?

    @DanKud
    var arr = [ /* массив со строками */
    	'THREE',
    	'DIFFERENT',
    	'LINES'
    ]
    
    function compare(inStr, cStr) { /* фукнция сравнения двух строк на наличии одинаковых символов */
    	var result = inStr.split('').filter(function(letter) {
    	  return (cStr.indexOf(letter) > -1);
    	});
    	return result;
    }
    
    for (i = 0; i < (arr.length-1); i++) { /* перебираем циклом строки из массива */
    	var result = (i == 0) ? compare(arr[i], arr[i+1]) : compare(result.join(''), arr[i+1]);
    }
    
    var finalStr = result.join(''); /* преобразуем полученный массив в строку */
    
    /* если нужно убрать повторяющиеся символы используем нижеприведенный метод для вывода результата
    var finalStr = Array.from(new Set(result)).join('');
    */
    
    alert(finalStr);
    Ответ написан
    1 комментарий
  • Почему поиск работает только при определённом имени поля input?

    @DanKud
    Потому что страница во фрейме обрабатывает GET-параметр q, который содержит поисковый запрос - https://www.bing.com/?q=запрос. Изменив значение name вы передаете во фрейм параметр с новым именем, а параметр q передаваться не будет и соответственно запрос будет пустым.
    Ответ написан
    Комментировать
  • Скрипт скрывает блок не так как нужно. В чем ошибка?

    @DanKud
    Потому что JS читает атрибут style непосредственно из тэга. Описание стилей в данном случае значения не имеет. Варианта три:

    1. Добавляете непосредственно атрибут style в тэг

    <div id="menu" style="display: none"></div>

    2. Получаете свойство стиля через getComputedStyle()

    function menuDown() {
      menu.style.display = getComputedStyle(menu).display;
      if (menu.style.display === 'none') {
      .....


    3. Добавляете условие в скрипт

    function menuDown() {
      if (menu.style.display === 'none' || !menu.style.display) {
      .....
    Ответ написан
    Комментировать
  • Как записать значения с JS в текстовик с помощью PHP?

    @DanKud
    PHP выполняется на серверном уровне. То есть вам в любом случае нужно передать введенные в форму данные на сервер, чтобы скрипт обработал их. Чтобы сделать это без перегрузки страницы нужно использовать Ajax-запрос.
    Ответ написан
    6 комментариев
  • Скажите пожалуйста в чем ошибка?

    @DanKud
    class Index
    {
        
        public function onServerIndex()
        {
            if ($_SERVER['REQUEST_URI'] == '/')
            {
                $page = 'index';
            }else{
                /* убираем не только первый, но и последний слэш */
                $page = substr($_SERVER['REQUEST_URI'], 1, -1);
            }
            
            if ($page == 'index') 
            {
                include "page/index.php";
            }else{
                if ($page == 'login')
                {
                    include "auth/login.php";
                }else{
                    exit('Страница 404');
                }
            }
        }
    }
    Ответ написан
  • Как вывести текст из базы данных(mysql) по ID?

    @DanKud
    ...
    $database_query   = mysqli_query($database_connect, "SELECT * FROM `page_main` WHERE ID = 1");
    ...
    Ответ написан
    1 комментарий
  • Авторизация на php в чем ошибка?

    @DanKud
    Потому что вы передаете name="nick" а обработать пытаетесь $nick = $_POST['nicknames'];
    Поменяйте значение либо в форме, либо в скрипте.
    Ответ написан
  • Почему не хочется парсить кинопоиск?

    @DanKud
    Во-первых конечно проверьте какой ответ приходит от запроса к странице Кинопоиска на тех итерациях цикла когда получаете ошибку. Там скорей всего капча появляется.

    Во-вторых используйте для подключения страницы не примитивный file_get_contents, а полноценные библиотеки. Тот же дефолтный CURL например. Передавайте полностью HTTP-заголовки, имитируя обычный пользовательский браузер. Учитывая специфику Кинопоиска и то, что его пытаются парсить все кому не лень, такие банальные блокировки юзера как запросы с пустыми заголовками там стоят 100%.

    Ну и уже соответственно если думать дальше и капча все-равно будет появляться, то уже писать скрипт обхода капчи с помощью соответствующих сервисов.

    Плюс один дополнительный момент парсинга с помощью библиотеки Symfony\DomCrawler на будущее. Подгружайте исходники для парсинга не напрямую через вызов класса new Crawler(), а уже после вызова методом ->addHtmlContent(), чтобы избежать проблем с кодировкой:

    $newUrl = new Crawler();
    $newUrl->addHtmlContent(file_get_contents('https://www.kinopoisk.ru/film/' . $value['kinopoisk_id']));
    Ответ написан
  • Получить почту с js json как?

    @DanKud
    $html = file_get_contents('https://xn--80aaaag4cofadj5cxk.su/'); /* парсим код страницы */
    preg_match_all('/<script type="application\/ld\+json">(.*?)<\/script>/is', $html, $result); /* регулярным выражением делаем выборку в массив содержимого тэгов script */
    $json = json_decode($result[1][1], true); /* декодируем json строку второго вхождения в массив, где находится нужный е-мейл */
    $email = $json['email'];
    print_r($email);
    Ответ написан
  • Как узнать процент оставшего времени?

    @DanKud
    $start_time = 1538388000; /* стартовое время отсчтеа 01-10-2018 */
    $time = time(); /* текущее время */
    $end_time = 1540892639; /* время окончания 30-10-2018 */
    
    $diff_time = ($end_time-$start_time); /* разница времени между 01-10-2018 и 30-10-2018 */
    $left_time = ($end_time-$time); /* осталось время до 30-10-2018 */
    
    $left_procent = round((($left_time/$diff_time)*100), 0); /* осталось времени в % между интервалом 01-10-2018 и 30-10-2018 */
    echo $left_procent.'%';

    Конечно если у вас $start_time будет текущее время, то и результат всегда будет 100%
    Ответ написан
    Комментировать
  • Как можно с сайта извлечь текст?

    @DanKud
    $html = file_get_contents('http://randome.pro/sovet.php'); /* получем код страницы в переменную $html */
    preg_match('/<span style="font-size: 40px;">(.*?)<\/span>/is', $html, $result); /* получаем содержимое тэга span в массив $result с помощью регулярного выражения */
    $str = trim($result[1]); /* присваиваем нужный нам текст переменной $str убирая лишние пробелы функцией trim */
    print_r($str); /* выводим наш текст */
    Ответ написан
    Комментировать
  • Нужно простое решение. Как мониторить почту, и в зависимости от сообщения, выполнять какие то действия?

    @DanKud
    Для мониторинга входящей почты через IMAP можно использовать ddeboer/imap. Там же есть встроенный поиск по телу сообщения. Либо можете просто принимать почту и самостоятельно искать нужное вхождение в тексте письма с помощью function.preg_match
    Ответ написан
    Комментировать
  • Как занести в массив полученные данные?

    @DanKud
    function.explode
    $str = "test@mail.ru|15";
    $arr = explode("|", $str)
    $mail = $arr[0];
    $value = $arr[1];
    Ответ написан
    Комментировать
  • В каком часовом поясе будет отосланное время из Москвы в формате UTC в Нью-Йорке?

    @DanKud
    Пояс UTC является стандартом на основе которого и вычисляется отклонение часового пояса текущего пользователя. На PHP вы напрямую не определите временную зону клиента, потому что нужно опрашивать сам клиент. Это можно сделать на JavaScript функцией getTimezoneOffset, которая показывает отклонения в минутах от UTC. Так же можно по геолокации через PHP пробовать определять. Сначала получаем данные пользователя по IP функцией geoip_record_by_name, затем определяем временную зону через geoip_time_zone_by_country_and_region и в итоге с помощью DateTime::getOffset получаем отклонение временной зоны клиента в секундах. Но сразу стоит иметь ввиду, что ни один из способов не даст 100% гарантии достоверности временного пояса клиента.
    Ответ написан
    Комментировать
  • Как работает HTTP_USER_AGENT и какой от него толк?

    @DanKud
    Переменная, как вы и поняли, нужна для определения браузера и операционной системы пользователя. Для каких целей обрабатывать эти данные в дальнейшем каждый уже решает сам. В первую очередь конечно используется для определения мобильного или стационарного устройства, чтобы вывести соответствующую страницу мобильной или основной версии сайта. Так же в разных браузерах есть некоторые нюансы отображения страницы, которые можно пофиксить если определить браузер пользователя. При определенных знаниях можно самому обработать строку и вывести значения, но существует масса пользовательских библиотек, которые без проблем обработают ее за вас и покажут нужную информацию.
    Например https://github.com/ornicar/php-user-agent или https://github.com/zsxsoft/php-useragent
    Ответ написан
    Комментировать
  • Безопасен ли такой метод реализации пользователей?

    @DanKud
    Авторизация пользователей через Steam API де-факто никакого вреда принести не может. Сам функционал API не позволяет делать что-то серьезное с аккаунтом, кроме получения информации о пользователе, которая в целом и так общедоступна. Касаясь того может ли другой пользователь подключаться к чужой сессии, то конечно может, если будет знать cookie. Но откуда он их узнает?
    Ответ написан
    Комментировать