Pular para o conteúdo principal

Simple PHP keywords generator

This is a simple PHP keywords generator that receives content by parameter and returns a string with a set of keywords separated by commas and ordered by occurrences.

Optionally you can pass into the config array parameter, a text file with words that you want to avoid or an array with words that isn't important. (make sure that the words into the file are separated by commas).

If you have any improvement or suggestion, please, let me know.

Note: You can also view this article at : http://sooho.com.br


if(!function_exists('make_keywords'))
{
    /**
    * returns a set of words ordered by occurrences
    * 
* $config = array(
* 'limit_keywords_to' => integer,
* 'avoid_words' => array(),
* 'min_allowed_word_length' => integer,
* 'use_utf8_decode' => Boolean, 
* 'order_by_occurence' => Boolean
* ); 

    * @param text $pContent - conteudo a transformar em keywords
    * @param array $config - (opcional) array contendo configuracoes
    * @return string - keywords
    **/
    function make_keywords( $pContent, $config = null )
    {
        # let's make an in_array case-insensitive
        if(!function_exists('in_arrayi')):
        function in_arrayi( $needle, $haystack )
        {
            return in_array( strtolower( $needle ), array_map( 'strtolower', $haystack ) );
        }
        endif;

        # initializing some default vars values
        $min_word_length = 4;
        # limit the number of output keywords
        $limit_keywords = 1000;
        # a set of disallowed words goes here
        $arr_avoid = array();
        # check if config param is set
        if(isset($config)):
        # looking for a minimum word length
        if(isset( $config['min_allowed_word_length'] )) $min_word_length = $config['min_allowed_word_length'];
        # checking for a new limit
        if(isset( $config['limit_keywords_to'] )) $limit_keywords = $config['limit_keywords_to'];
        # check if there's words to avoid
        if(isset( $config['avoid_words'] ) && ( is_array( $config['avoid_words'] ))) $arr_avoid = $config['avoid_words'];
        # maybe the avoid_words is pointing to a file! lets check!
        if(isset( $config['avoid_words'] ) && ( is_string( $config['avoid_words']) )):
        if(file_exists( $config['avoid_words'] )){
        # let's open the file in read mode
        $file_in = fopen( $config['avoid_words'],"r" );
        # let's get the filesize for the fread function
        $size = filesize( $config['avoid_words'] ) + 1;
        # getting the file content
        $file_content = fread( $file_in, $size );
        # avoid any tags
        $file_content = strip_tags( $file_content );
        # turn content into array
        # remember that the words within the file must be separated by commas
        $file_content = str_replace( " ", "", $file_content );
        $arr_words = explode(",", $file_content);
        if( is_array( $arr_words) ) 
        $arr_avoid = $arr_words;
        }
    endif;
    endif;

    # sometimes need use utf8 decode to fix some issues
    if( !isset( $config['use_utf8_decode'] ) || 
    (isset( $config['use_utf8_decode']) && 
$config['use_utf8_decode'] == TRUE ) )
        $pContent = utf8_decode($pContent);

        $pContent = strip_tags($pContent);
        # preparando conteudo para conversao
        $content = str_replace( " ", "@", $pContent );
        # remove sinais de pontuacao
        $strip_arr = array( "," ,"." ,";" ,":", "\"", "'", "“","”","(",")", "!","?" );
        $content = str_replace( $strip_arr, "", $content );
        # separa palavras, e coloca as num array
        $arr_keywords = explode( "@", $content );
        # verifica tamanho da palavra para evita artigos, pronomes, etc
        # e tambem verifica se ha palavras nao desejadas
        $key = array();
        foreach ($arr_keywords as $value) :
            if( strlen( $value ) > $min_word_length ):
                # verifica por palavras nao desejadas
                if ( in_arrayi( $value, $arr_avoid ) ) continue;
                # se potencial keyword, entao, inclui ao array
                $keys[] = $value;
            endif;
        endforeach;
        # count the number of occurrences
        $tmp = array_count_values( $keys );
        # check if needs to order the array
        if(!isset($config['order_by_occurence']) 
    || (isset($config['order_by_occurence']) 
&& $config['order_by_occurence'] == TRUE ) )
        arsort( $tmp );
        # reduces the number of elements into the array
        $ordem = array_slice( $tmp, 0, $limit_keywords );
        $arr_keywords = array();
        # gets only the keys
        foreach($ordem as $key => $value ) $arr_keywords[] = strtolower(trim( $key ));
        # implode elements with commas
        $keywords = implode( ', ', $arr_keywords );
        return $keywords;
    }
}

#example 1 ... make it as simple as possible
echo make_keywords( "Please make me some cool keywords, with the following text and make me happy!" );

echo "
";


#example 2 ... using the config param
$config = array(
'limit_keywords_to' => 100,
'avoid_words' => array( "please","avoid","select","the","words","into","this","array","as","keywords","thanks" ),
'min_allowed_word_length' => 4,
'use_utf8_decode' => FALSE, 
'order_by_occurence' => FALSE
);

echo "
";


echo make_keywords( 
"Please make me some cool keywords, with the following text and make me happy!",
$config
);

echo "
";


# example 3 ... avoid_words into a text file
# please, make sure that the words within the file is separated by commas
$config = array(
'avoid_words' => 'avoid_these_words.txt'
);
$content = "Please make me some cool keywords, with the following text and make me happy!";
echo make_keywords( $content, $config );




Comentários

Postar um comentário

Postagens mais visitadas deste blog

Dicas para Iniciantes - Clash of Clans

Este post visa apenas expor algumas dicas e experiências vividas até o momento no jogo Crash of Clans, desenvolvido para aparelhos da Apple, é indicado para quem não conhece o game ainda ou para quem apenas quer ler algumas dicas e experiências (ao fim) .  Sou o membro Osians  integrante do Clan Unrated.

How to play Clash of Clans on PC

A few days ago I was looking for a way to play Clash of Clans on my Desktop PC, but I just found fakes and links to surveys. After some frustrations I discovered that Clash of Clans now is available for Google Android, so I think that an easy way to play this game is to install an Android emulator on PC. There's a lot of Android emulator over the internet and after testing a bunch of these last month I conclude that the best choise is BlueStacks .  (You can download it at  http://www.bluestacks.com/  ) Note that I'll not teach you how to install it because there's a lot of tutorials and how-to's over the internet. - After install the emulator just execute it;  - You need to set up this, the system will ask you about a google account( if you haven't, go ahead and do one ); - Finally, into the Android emulator go to the Google Shop, search for Clash of Clans and install it. If the tip above is not clear or if you have any doubt, please let me know.

Rastreamento de Pedidos : Correios - PHP , API + XML

RESUMO Esse documento visa ensinar como implantar o rastreamento de mercadorias dos correios em um Website utilizando para isso a linguagem de programação PHP. Caso você queira apenas rastrear um Objeto dos Correios, pode fazer isso através do site Sooho clicando aqui  ou através do site dos Correios . Nota importante: Mediante as alterações de 2017 nos serviços dos correios, eu recomendo fortemente que use o tutorial do seguinte link: http://sooho.com.br/2017/03/24/rastreamento-de-pedidos-correios-php-soap/   Ele lhe dará uma solução de rastreamento definitiva e valida a longo prazo.

Bolo gelado de Maracujá com cobertura de Marshmallow frio e geleia de Brilho

Hoje um amigo na acadêmia pediu-me uma receita de bolo de maracujá, então, para " não deixar esse blog muito monótono " vamos aprender uma receita de bolo gelado de maracujá. =] (Foto ilustrativa retirada do site Anamaria  http://mdemulher.abril.com.br/revistas/anamaria/  ) O Bolo ou Torta de Maracujá (chame-o como quiser) é o que pode ser visto na foto acima. MASSA 06 ovos separados 02 xícaras (chá) de açúcar 03 xícaras (chá) de farinha de trigo ½ xícara (chá) de água 01 xícara (chá) de suco de maracujá 01 colher (sopa) de fermento em pó RECHEIO 01 lata de creme de leite s/ soro gelado ½ lata de leite condensado gelado 1/3 lata de suco de maracujá 01 colher (sopa) de emulsificante ** polpa de Maracujá MARSHMALLOW FRIO 03 Claras 09 colheres (sopa) cheia de açúcar 01 colher (sopa) cheia de emulsificante ** essência de baunilha á gosto GELEIA  DE BRILHO ½ xícara (chá) de água ½ xícara

Delphi - Inserir valor Moeda no TEdit

Estive pesquisando meios de usar um TEdit no Delphi com formatação como a dos Bancos em Moeda, para um Projeto antigo meu. Porém, achei apenas uma postagem falando sobre o assunto. (Link segue nas fontes) Mas, apesar de fazer o que eu queria, o código era um tanto complicado, pois da forma que estava seria necessário refazer o mesmo para todos os TEdits que eu fosse usar para inserir valores monetários além de ter que usar 2 eventos de cada TEdit ( OnkeyPress e OnChange ). Então, baseado nesse código criei uma pequena Procedure para fazer essa formatação de maneira simples. Para isso, basta passar como parâmetro o TEdit que deve ser formatado e o Key do teclado que será passado ao mesmo. Segue código comentado abaixo.

Desbloqueando Nintendo Wii 4.3

Bem, este não é um tutorial de como destravar seu aparelho Wii, visto que existem uma gama imensa de tutoriais na web descrevendo isso em passos simples, este artigo apenas visa mostrar as minhas experiências no destravamento de um novo Nintendo Wii Preto 4.3e. Ao final deste post deixarei as fontes que utilizei para desbloqueio do mesmo. Em agosto de 2011 minha irmã foi à Europa e por lá encontrou um nintendo Wii novo Preto com Motion Plus  super barato que vem por padrão na versão 4.3e. O Grande problema é que ele é bloqueado para região Europeia. A principio eu não queria ficar a cargo de desbloquear o aparelho. E fui até uma loja especializada consultar o valor de desbloqueio, que ficava em R$200,00 ... um preço salgado visto que o aparelho não custa tudo isso. O jeito é tentar desbloquear por conta própria, então fui pesquisar como fazer isso através da internet. Infelizmente - e diferente de Sony e Microsoft - a Nintendo divide seus consoles por Regiões, sendo estas America(

AppCake no lugar do Installous ( Outdated Version )

Uma vez que o Installous foi descontinuado e vive a emitir a todo momento a mensagem " Installous - Outdated Version " , a solução mais simples e pratica é troca-lo por uma app com as mesmas características, no caso o AppCake . Podemos instalar o AppCake através do Cydia . Vou ser rápido quanto a instalação do mesmo neste post visto que a instalação é simples. vamos aos passos: 1 - abra o Cydia e acesse Manage ; 2 - acesse Source toque em Edit e em seguida toque em Add (no canto superior esquerdo da tela); 3 - escreva  http://cydia.iphonecake.com e clique em Add Source ; 4 - Apos a instalação da fonte, volte ao cydia acesse Search e digite AppCake , toque na Aplicação que aparece no resultado e em seguida toque em Install no canto superior direito da tela.

Rastreamento de Pedidos : Correios - PHP + SOAP

Nota Importante:  Olá, esse mesmo artigo encontra-se atualizado em um novo site de minha autoria, o  Sooho   http://sooho.com.br/2017/03/24/rastreamento-de-pedidos-correios-php-soap/ , dêem preferência ao conteúdo ali contido, visto futuramente este blog ficara obsoleto. Obrigado.  O Código que se segue, é uma alternativa para rastrear objetos do Correio através do PHP com a tecnologia SOAP . Uma vez que a API mais antiga dos correios - PHP + XML -, não tem funcionado corretamente, resolvi por publicar esse método simples que espero ser de alguma ajuda a quem necessite. Codígo melhorado no Github:   https://github.com/osians/rastreamento-de-pedidos/ Bom, eu não vou me ater a uma extensa explicação sobre os detalhes do código, apenas gostaria de frisar algumas notas importantes.    - Primeiro:  se você pretende utilizar a API dos correios, tire um tempo e vá até uma Agência e solicite sua senha e username para uso da mesma.   - Segundo: A documentação para compree