Поиск словосочетаний по доменным именам

Я новичок в PHP и мне нужна помощь в завершении скрипта. У меня есть сценарий PHP, который может взять все слова из доменного имени. Мне нужен скрипт, чтобы можно было найти наиболее вероятные слова, которые являются ключевыми словами доменного имени.

Вот мой сценарий:

<?php

$domain = trim(htmlspecialchars('where-amigoing.togoto.com'));
preg_match('/(.*?)((\.co)?.[a-z]{2,4})$/i', $domain, $m);
$ext = isset($m[2]) ? $m[2]: '';

$replace = array($ext,'-','.');
$domainWords = str_replace($replace,'',$domain);

//Find Word in Dictionary
function pspell_icheck($dictionary_link, $word) {
return ( pspell_check($dictionary_link, $word) ||
strtolower(reset(pspell_suggest($dictionary_link, $word))) == strtolower($word) );
}

//Find Words
function getwords( $string ) {
if( strpos($string,"xn--") !== false ) {
return false;
}
$pspell = pspell_new( 'en' );
$check = 0;
$words = array();
for( $j = 0; $j < ( strlen( $string ) ); $j++ ) {
for( $i = 0; $i < strlen( $string ); $i++ ) {
if( pspell_icheck( $pspell, substr( $string, $j, $i ) ) ) {
$check++;
$words[] = substr( $string, $j, $i );
}
}
}
$words = array_unique( $words );
if( $check > 0 ) {
return $words;
}
return false;
}

echo 'domain name: '.$domain .'<br>';
echo 'domain words: '.$domainWords .'<br>';
echo 'domain extension: '.$ext .'<br>';
print_r ( getWords( $domainWords ) );

?>

Код выводит это:

доменное имя: где-amigoing.togoto.com

доменные слова: whereamigoingtogoto

расширение домена: .com

Array ([0] => [1] => w [2] => где [4] => h [5] => он [6] => ее [7] => здесь [9] => e [ 10] => er [11] => ere [13] => r [14] => re [15] => rea [16] => ream [19] => ea [21] => a [22] => am [23] => ami [24] => amigo [26] => m [27] => mi [28] => mig [30] => i [32] => g [33] => go [34] => собирается [36] => o [37] => oi [40] => в [42] => n [45] => gt [47] => t [48] => в [ 49] => tog [50] => togo [56] => получил [59] => ot)

Я хочу взять массив и найти словосочетания без наложения слов, чтобы определить ключевые слова для доменного имени.

Кто-нибудь знает, как это сделать? Я знаю, что мне нужно пройтись по словам и сравнить их с исходным доменом, но это кажется мне немного не по карману.

4

Решение

Прежде всего вы должны сбросить пустое значение из массива.
Во-вторых, сбросьте все буквы без какого-либо смысла как слова.
Тогда попробуйте мой код:

<?php

class domainWordsCutter
{
private $words;
private $wordsArray = array();

public function __construct($words)
{
$this->words = $words;
}

public function cutWords($domainWords)
{
if(empty($domainWords))
{
return true;
}
foreach($this->words as $word)
{
$wordLen = strlen($word);
if
(
$wordLen <= strlen($domainWords) &&
substr($domainWords, 0, $wordLen) == $word &&
$this->cutWords(substr($domainWords, $wordLen))
)
{
$this->wordsArray[] = $word;
return true;
}
}
return false;
}

public function getWordsArray()
{
return $this->wordsArray;
}
}

$domainWordsCutter = new domainWordsCutter(array ( 2 => 'where', 5 => 'he', 6 => 'her', 7 => 'here', 10 => 'er', 11 => 'ere', 14 => 're', 15 => 'rea', 16 => 'ream', 19 => 'ea', 21 => 'a', 22 => 'am', 23 => 'ami', 24 => 'amigo', 27 => 'mi', 28 => 'mig', 30 => 'i', 33 => 'go', 34 => 'going', 37 => 'oi', 40 => 'in', 45 => 'gt', 48 => 'to', 49 => 'tog', 50 => 'togo', 56 => 'got', 59 => 'ot', ));
if($domainWordsCutter->cutWords('whereamigoingtogoto'))
{
var_dump($domainWordsCutter->getWordsArray());
}
else
{
echo 'Not found';
}

Выход:

array (7) {[0] => string (2) «to» [1] => string (2) «go» [2] => string (2)
«to» [3] => строка (5) «идущая» [4] => строка (2) «mi» [5] => строка (1) «a» [6] => строка (5) «где «}

Следите за порядком реверса.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector