{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блог не только про SEO: заметки с тегом Код",
    "_rss_description": "Я профессионально занимаюсь SEO уже более 15 лет. Хочу делиться своими мыслями и экспертизой.",
    "_rss_language": "ru",
    "_itunes_email": "gaydukilya@ya.ru",
    "_itunes_categories_xml": "",
    "_itunes_image": "https:\/\/ilyagaiduk.ru\/pictures\/userpic\/userpic-square@2x.jpg?1794467168",
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/ilyagaiduk.ru\/tags\/kod\/",
    "feed_url": "https:\/\/ilyagaiduk.ru\/tags\/kod\/json\/",
    "icon": "https:\/\/ilyagaiduk.ru\/pictures\/userpic\/userpic@2x.jpg?1794467168",
    "authors": [
        {
            "name": "Илья Гайдук",
            "url": "https:\/\/ilyagaiduk.ru\/",
            "avatar": "https:\/\/ilyagaiduk.ru\/pictures\/userpic\/userpic@2x.jpg?1794467168"
        }
    ],
    "items": [
        {
            "id": "50",
            "url": "https:\/\/ilyagaiduk.ru\/all\/moj-skript-generatora-domenov-iz-poiskovyh-podskazok-google\/",
            "title": "Мой скрипт генератора доменов из поисковых подсказок Google",
            "content_html": "<!-- wp:paragraph -->\n<p>Скрипт PHP генерирует доменные имена по ключевому слову из поисковых подсказок Google. Посмотреть работу скрипта можно на <a href=\"https:\/\/gaiduki.com\/services\/vsgoogle-domain-generation\">странице<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Генератор работает следующим образом:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol><!-- wp:list-item -->\n<li>Вводите ключевое слово<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Скрипт получает список подсказок Google<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Подсказки транслитерируются<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Если введнено ключевое слово не на русском, то подсказки будут на том языке, на котором введено ключевое слово.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Скрипт выводит варианты доменов на экран.<\/li>\n<!-- \/wp:list-item --><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Можно ввести слово, например, на японском.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":305,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/ilyaseo.ru\/wp-content\/uploads\/2024\/05\/image-3-1024x676.png\" alt=\"\" class=\"wp-image-305\"\/><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>Исходный код скрипта адаптирован под Laravel.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:enlighter\/codeblock {\"language\":\"php\"} -->\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Service extends Model\n{\n    public function vsgoogle($domain){\n          function download_page($path){\n        $ch = curl_init();\n        curl_setopt($ch, CURLOPT_URL,$path);\n        curl_setopt($ch, CURLOPT_FAILONERROR,1);\n        curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);\n        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);\n        curl_setopt($ch, CURLOPT_TIMEOUT, 30);\n        $retValue = curl_exec($ch);\n        $data= curl_getinfo ($ch);\n        \/\/print_r($data);\t \/\/ смотрим статусы для отладки - http_code\n        curl_close($ch);\n        return $retValue;\n    }\n    \/\/меняем плохие вхождения\n    function replaceSimbolRu($baseKeyword){\n\n        $searchsimbol = array(\"ьи\", \"ье\", \"ью\", \"ья\", \"веб\", \"веб \", \"вебмастер\", \"онлайн\", \"вебинар\",\n            \"вебинары\"\n\n        );\n        $zamenasimbol = array(\"i\", \"ie\", \"iy\", \"iya\", \"web\", \"web \", \"webmaster\", \"online\", \"webinar\",\n            \"webinary\"\n\n        );\n        $myZnak = str_replace(  $searchsimbol,  $zamenasimbol,  $baseKeyword  );\/\/преобразование мягкого знака\n        return $myZnak;\n    }\n    \/\/исходный запрос\n    $key = $domain;\n    $searchsimbol = array(\" \");\n    $zamenasimbol = array(\"+\");\n    $query = str_replace($searchsimbol, $zamenasimbol, $key);\n\n    $urlNoVS = \"http:\/\/suggestqueries.google.com\/complete\/search?&amp;output=toolbar&amp;gl=us&amp;q=\".$query;\n\/\/отправляем запрос без vs\n    $sXML = download_page($urlNoVS);\n    $oXML = new \\SimpleXMLElement(utf8_encode($sXML));\n\/\/отправляем запрос с vs\n    $url = \"http:\/\/suggestqueries.google.com\/complete\/search?&amp;output=toolbar&amp;gl=us&amp;q=\".$query.\"+vs\";\n    $tXML = download_page($url);\n    $aXML = json_encode(utf8_encode($tXML));\n\n        $massSuggestion = [];\n\n        for ($i = 0; $i &lt;= 9; $i++) {\n            if (isset($oXML->CompleteSuggestion[$i]->suggestion['data'])) {\n                $key = $oXML->CompleteSuggestion[$i]->suggestion['data'];\n\n                if (!empty($key)) {\n                    $searchsimbol = array(\" \");\n                    $zamenasimbol = array(\"+\");\n                    $keyword = str_replace($searchsimbol, $zamenasimbol, $key);\n\n                    $massSuggestion[] = $keyword;\n                } else {\n                    break;\n                }\n            } else {\n                break;\n            }\n        }\n\n\n        for ($i = 0; $i &lt;= 9; $i++) {\n        if (isset($aXML->CompleteSuggestion[$i]->suggestion['data'])) {\n            $key = $aXML->CompleteSuggestion[$i]->suggestion['data'];\n\n            $searchsimbol = array(\"$query vs \");\n            $zamenasimbol = array(\"\");\n            $keywordVS = str_replace($searchsimbol, $zamenasimbol, $key);\n\n            $searchsimbol = array(\" \");\n            $zamenasimbol = array(\"+\");\n            $keywordVS = str_replace($searchsimbol, $zamenasimbol, $keywordVS);\n\n            $massSuggestion[] = $keywordVS;\n        } else {\n            break;\n        }\n    }\n\n\n    $massResults = [];\n    foreach ($massSuggestion as $query) {\n        \/\/ Отправляем запрос без 'vs'\n        $urlNoVS = \"http:\/\/suggestqueries.google.com\/complete\/search?&amp;output=toolbar&amp;gl=us&amp;q=\" . $query;\n        $sXML = download_page($urlNoVS);\n        $oXML = new \\SimpleXMLElement(utf8_encode($sXML));\n\n        \/\/ Обрабатываем результат без 'vs'\n        for ($i = 0; $i &lt;= 9; $i++) {\n            \/\/ Проверяем существование свойства 'data' перед доступом к нему\n            if (isset($oXML->CompleteSuggestion[$i]->suggestion['data'])) {\n                $key = $oXML->CompleteSuggestion[$i]->suggestion['data'];\n                $massResults[] = $key;\n            } else {\n                \/\/ Если свойство 'data' не существует, прерываем цикл\n                break;\n            }\n        }\n\n        \/\/ Отправляем запрос с 'vs'\n        $url = \"http:\/\/suggestqueries.google.com\/complete\/search?&amp;output=toolbar&amp;gl=us&amp;q=\" . $query . \"+vs\";\n        $tXML = download_page($url);\n        $aXML = new \\SimpleXMLElement(utf8_encode($tXML));\n\n        \/\/ Обрабатываем результат с 'vs'\n        for ($i = 0; $i &lt;= 9; $i++) {\n            \/\/ Проверяем существование свойства 'data' перед доступом к нему\n            if (isset($aXML->CompleteSuggestion[$i]->suggestion['data'])) {\n                $key = $aXML->CompleteSuggestion[$i]->suggestion['data'];\n\n                \/\/ Выполняем замены символов в строке $key\n                $searchsimbol = array(\"$query vs \");\n                $zamenasimbol = array(\"\");\n                $keywordVS = str_replace($searchsimbol, $zamenasimbol, $key);\n\n                $massResults[] = $keywordVS;\n            } else {\n                \/\/ Если свойство 'data' не существует, прерываем цикл\n                break;\n            }\n        }\n    }\n\n    $massResults = array_merge($massSuggestion, $massResults);\n    $massInVS = [];\n    $massNOVS = [];\n    foreach($massResults as $key) {\n        $mystring = $key;\n        $findme   = ' vs ';\n        $pos = strpos($mystring, $findme);\n        if($pos === false) {\n            $massNOVS[] = $key;\n        }\n        else{\n            $massInVS[] = $key;\n        }\n    }\n\/\/объединяем элементы массива в строку\n    $strVS = implode(\" vs \", $massInVS);\n\/\/создаем массив, через разделитель vs\n    $massNewNoVS = explode(\" vs \", $strVS);\n\n    $resultMass = array_merge($massNOVS, $massNewNoVS);\n    $resultMass = array_unique($resultMass);\n    $ResultTotalMass = [];\n    foreach($resultMass as $key) {\n        $searchsimbol = array(\" vs\" , \"vs \", \" vs \" );\n        $zamenasimbol = array(\"\", \"\", \"\");\n        $keywordNoVS = str_replace($searchsimbol, $zamenasimbol, $key);\n        if (mb_strlen($keywordNoVS, 'utf8') >= 18) {\n            continue;\n        }\n        else {\n            $rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М',\n                'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э',\n                'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',\n                'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');\n            $lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'J', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N',\n                'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', '', 'E', 'Yu',\n                'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'j', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p',\n                'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', '', 'e', 'yu', 'ya');\n\n            $myZnak = replaceSimbolRu($keywordNoVS); \/\/преобразование мягкого знака и других символов\n            $keywordNoVS = str_replace($rus, $lat, $myZnak);\n            $searchsimbol = array(\" \", \"  \");\n            $zamenasimbol = array(\"\", \"\");\n            $ResultKey = str_replace($searchsimbol, $zamenasimbol, $keywordNoVS);\n            $inDomain = preg_replace('\/[^\\p{L}0-9-\\s ]\/iu','', $ResultKey);\n            if(empty($inDomain)) {\n                continue;\n            }\n            else{\n                $ResultTotalMass[] = $inDomain;\n            }\n\n\n        }\n    }\n    \/\/выводим результат\n\n    $ResultTotalMass = array_unique($ResultTotalMass);\n    return $ResultTotalMass;\n\n\n    }\n}\n            \n<\/pre>\n<!-- \/wp:enlighter\/codeblock -->",
            "summary": "Мой скрипт генератора доменов из поисковых подсказок Google",
            "date_published": "2024-05-21T23:59:02+03:00",
            "date_modified": "2024-05-28T03:05:23+03:00",
            "tags": [
                "PHP",
                "Код"
            ],
            "_date_published_rfc2822": "Tue, 21 May 2024 23:59:02 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "50",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4199,
    "_e2_ua_string": "Aegea 11.5 (v4199e)"
}