Последнее обновление на 28 мая, 2024
Скрипт PHP генерирует доменные имена по ключевому слову из поисковых подсказок Google. Посмотреть работу скрипта можно на странице.
Генератор работает следующим образом:
- Вводите ключевое слово
- Скрипт получает список подсказок Google
- Подсказки транслитерируются
- Если введнено ключевое слово не на русском, то подсказки будут на том языке, на котором введено ключевое слово.
- Скрипт выводит варианты доменов на экран.
Можно ввести слово, например, на японском.
Исходный код скрипта адаптирован под Laravel.
namespace App; use Illuminate\Database\Eloquent\Model; class Service extends Model { public function vsgoogle($domain){ function download_page($path){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$path); curl_setopt($ch, CURLOPT_FAILONERROR,1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $retValue = curl_exec($ch); $data= curl_getinfo ($ch); //print_r($data); // смотрим статусы для отладки - http_code curl_close($ch); return $retValue; } //меняем плохие вхождения function replaceSimbolRu($baseKeyword){ $searchsimbol = array("ьи", "ье", "ью", "ья", "веб", "веб ", "вебмастер", "онлайн", "вебинар", "вебинары" ); $zamenasimbol = array("i", "ie", "iy", "iya", "web", "web ", "webmaster", "online", "webinar", "webinary" ); $myZnak = str_replace( $searchsimbol, $zamenasimbol, $baseKeyword );//преобразование мягкого знака return $myZnak; } //исходный запрос $key = $domain; $searchsimbol = array(" "); $zamenasimbol = array("+"); $query = str_replace($searchsimbol, $zamenasimbol, $key); $urlNoVS = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=".$query; //отправляем запрос без vs $sXML = download_page($urlNoVS); $oXML = new \SimpleXMLElement(utf8_encode($sXML)); //отправляем запрос с vs $url = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=".$query."+vs"; $tXML = download_page($url); $aXML = json_encode(utf8_encode($tXML)); $massSuggestion = []; for ($i = 0; $i <= 9; $i++) { if (isset($oXML->CompleteSuggestion[$i]->suggestion['data'])) { $key = $oXML->CompleteSuggestion[$i]->suggestion['data']; if (!empty($key)) { $searchsimbol = array(" "); $zamenasimbol = array("+"); $keyword = str_replace($searchsimbol, $zamenasimbol, $key); $massSuggestion[] = $keyword; } else { break; } } else { break; } } for ($i = 0; $i <= 9; $i++) { if (isset($aXML->CompleteSuggestion[$i]->suggestion['data'])) { $key = $aXML->CompleteSuggestion[$i]->suggestion['data']; $searchsimbol = array("$query vs "); $zamenasimbol = array(""); $keywordVS = str_replace($searchsimbol, $zamenasimbol, $key); $searchsimbol = array(" "); $zamenasimbol = array("+"); $keywordVS = str_replace($searchsimbol, $zamenasimbol, $keywordVS); $massSuggestion[] = $keywordVS; } else { break; } } $massResults = []; foreach ($massSuggestion as $query) { // Отправляем запрос без 'vs' $urlNoVS = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=" . $query; $sXML = download_page($urlNoVS); $oXML = new \SimpleXMLElement(utf8_encode($sXML)); // Обрабатываем результат без 'vs' for ($i = 0; $i <= 9; $i++) { // Проверяем существование свойства 'data' перед доступом к нему if (isset($oXML->CompleteSuggestion[$i]->suggestion['data'])) { $key = $oXML->CompleteSuggestion[$i]->suggestion['data']; $massResults[] = $key; } else { // Если свойство 'data' не существует, прерываем цикл break; } } // Отправляем запрос с 'vs' $url = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=" . $query . "+vs"; $tXML = download_page($url); $aXML = new \SimpleXMLElement(utf8_encode($tXML)); // Обрабатываем результат с 'vs' for ($i = 0; $i <= 9; $i++) { // Проверяем существование свойства 'data' перед доступом к нему if (isset($aXML->CompleteSuggestion[$i]->suggestion['data'])) { $key = $aXML->CompleteSuggestion[$i]->suggestion['data']; // Выполняем замены символов в строке $key $searchsimbol = array("$query vs "); $zamenasimbol = array(""); $keywordVS = str_replace($searchsimbol, $zamenasimbol, $key); $massResults[] = $keywordVS; } else { // Если свойство 'data' не существует, прерываем цикл break; } } } $massResults = array_merge($massSuggestion, $massResults); $massInVS = []; $massNOVS = []; foreach($massResults as $key) { $mystring = $key; $findme = ' vs '; $pos = strpos($mystring, $findme); if($pos === false) { $massNOVS[] = $key; } else{ $massInVS[] = $key; } } //объединяем элементы массива в строку $strVS = implode(" vs ", $massInVS); //создаем массив, через разделитель vs $massNewNoVS = explode(" vs ", $strVS); $resultMass = array_merge($massNOVS, $massNewNoVS); $resultMass = array_unique($resultMass); $ResultTotalMass = []; foreach($resultMass as $key) { $searchsimbol = array(" vs" , "vs ", " vs " ); $zamenasimbol = array("", "", ""); $keywordNoVS = str_replace($searchsimbol, $zamenasimbol, $key); if (mb_strlen($keywordNoVS, 'utf8') >= 18) { continue; } else { $rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'); $lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'J', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', '', 'E', 'Yu', 'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'j', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', '', 'e', 'yu', 'ya'); $myZnak = replaceSimbolRu($keywordNoVS); //преобразование мягкого знака и других символов $keywordNoVS = str_replace($rus, $lat, $myZnak); $searchsimbol = array(" ", " "); $zamenasimbol = array("", ""); $ResultKey = str_replace($searchsimbol, $zamenasimbol, $keywordNoVS); $inDomain = preg_replace('/[^\p{L}0-9-\s ]/iu','', $ResultKey); if(empty($inDomain)) { continue; } else{ $ResultTotalMass[] = $inDomain; } } } //выводим результат $ResultTotalMass = array_unique($ResultTotalMass); return $ResultTotalMass; } }