[PHP] Auto Keyword Generator

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik heb mijn Auto Keyword Generator af. Met een beetje hulp van sommigen van jullie. Ik denk ik deel hem hier dan hebben jullie er misschien nog wat aan.

edit test hem op: http://aldi.xs4all.nl/~koen/autokey/keywordgen2.php

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?
//----------------------------------------------------------
// Functie GetKeywords(url)
//----------------------------------------------------------
//
// Input:
// url     : Web site adress eg: http://www.slashdot.org
//----------------------------------------------------------
//
// Returns
// true     : Keywords for this url as a comma seperated list
//----------------------------------------------------------
function GetKeywords($url)  {

    if(!$url) { // If no URL is given stop.
    exit();
    }

    // Get given URL
    $content_array  = file($url);
    $parsestring    = implode("", $content_array);
    $size           = strlen($content);

    // Convert line brakes to spaces
    $parsestring = ereg_replace("[ \r\n\f\t\v]+\\|[ \r\n\f\t\v]+", " ", $parsestring);

    // Filter out comments, <style> and <script>
    $parsestring = preg_replace("<!--.*-->",' ',$parsestring);
    $parsestring = preg_replace("/<(script)[^>]*>.+<\/(script)[^>]*>/is",' ',$parsestring);
    $parsestring = preg_replace("/<(style)[^>]*>.+<\/(style)[^>]*>/is",' ',$parsestring);

    // Filter out html-tags
    $parsestring = strtolower( $parsestring );
    $parsestring = strip_tags( $parsestring );

    // Re-encode characters
    $trans_tbl = get_html_translation_table (HTML_ENTITIES);
    $trans_tbl = array_flip ($trans_tbl);
    $parsestring = strtr ($parsestring, $trans_tbl);


    // Piano's -> Piano
    $parsestring = preg_replace("/[a-zA-Z](’){1}[a-zA-Z]/",'',$parsestring);
    $parsestring = preg_replace("/(’){1}[a-zA-Z]/",'',$parsestring);


    // Filter " ' entities
    $parsestring = preg_replace("/(&#14)[1-9](;)/",'',$parsestring);

    // Filter nasty characters
    $ugly_characters = array(".",",","<",">","/","?",";",":","\'","\"","\\","|","[","{","]","}"," -","- ","--","_","=","+","!","@","#","$","%","^","&","*","(",")","»","'","\"");
    foreach( $ugly_characters as $character ) 
    {
        $parsestring = str_replace ($character, " ", $parsestring);
    }

    // Filter numbers
    $parsestring = preg_replace ('/[\s][^a-zA-Z]*[\d][^a-zA-Z]*[\s]/', "", $parsestring);

    // Separate words
    $parsestring = preg_replace ('/[\s]+/', ";", $parsestring);

    // Filter small words
    $parsestring = preg_replace ('/;[a-zA-Z\s]{1,2};/', ";", $parsestring);
    $parsestring = preg_replace ('/;[\s\r\n\f\t\v]+;/', ";", $parsestring);

    $wordsarray = explode(";", $parsestring);   // Now we have a nice words array...
    sort ( $wordsarray );                       // Just sort it...

    // Read in the bad words!
    $filename = "./badwords.inc.php";
    $fd = fopen ($filename, "r");
    $badwords = fread ($fd, filesize ($filename));
    fclose ($fd);

    // Make an array out of it
    $badwordsarray = split(" ",$badwords);

    // Check if bad, else count
    for ($i=0; $i<count($wordsarray); $i++) 
    {
        $word = $wordsarray[$i];
        if (strlen( $word ) > 2) // Is the word longe than 2 chars?
        { 
            if( !in_array ($word, $badwordsarray)) // Is it a bad word? (thanx tomaske)
            { 
                if ($freqarray[$word]) 
                {
                    $freqarray[$word] += 1;
                } 
                else 
                {
                    $freqarray[$word]=1;
                }
            }
        }
    }

    // Sort by count
    arsort($freqarray);
    array_splice ($freqarray, 20);

    while (list($key, $val) = each($freqarray)) 
    {    
        $pagecontents .= "[$key] => $val<br>";
        $keys .= $key.", ";
    } 

    chop($keys);

    return keys;
}
?>

[ Voor 34% gewijzigd door Verwijderd op 21-11-2002 23:51 ]


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Cool! goed initiatief!

Opmerking:
je kan die BadWord-function mooier oplossen met in_array()

[edit]
verder gebruik je eerst foreach om door een array te lopen, daana een for($i.. lusje en daarna een while (list($key, $val).. lus!

Misschien allemaal omzetten naar 1 dezelfde (foreach vink zelf de mooiste ;) )

[nog een edit]

de exit() op regel 16 is ook niet netjes in een functie, ja kan beter 0 returnen. Wanneer je dan de functie gebruikt, kan je adhv de return waarde zelf een error ofzo weergeven...

[ Voor 71% gewijzigd door thomaske op 21-11-2002 23:52 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
joh :) ik ga het meteen doen

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
En als het bestand niet bestaat?

Verwijderd

Topicstarter
dan heb je hem niet goed geïnstalleerd :)

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

inderdaad, ook wanneer het badwords bestand niet gevonden / geopend kan worden (tip) zou ik een error returnen.

iets in de trant van:
return-code:
• -1: url not found
• 0: no words found
• -2: badwordsfile niet gevonden..

of iets in die trant!

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
dat bestand is leeg

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • Anders
  • Registratie: December 2000
  • Laatst online: 13-09 18:52
In aanvulling op de opmerkingen van Thomaske, er mag nog wel meer error-checking in. Wat als bijvoorbeeld de url niet bestaat? Nu krijgt de gebruiker een karrevracht aan errors aan zijn broek.
Leer jezelf aan om op alle zaken waarvan je niet 100% zeker bent, een controle uit te voeren, en waar van toepassing, een nette foutmelding terug te geven. In jouw script dus op het bestaan van de url, en het bestaan van het bestand badwords.inc.php. Zolang een PHP-script nog PHP-errors kan returnen, om wat voor reden dan ook, is het m.i. niet goed genoeg om in een website op te nemen. Bij ontwikkeling voor eigen gebruik of voor een specifieke groep mensen gelden natuurlijk andere maatstaven.

Ik spoor veilig of ik spoor niet.


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

change
PHP:
51
52
53
// Filter nasty characters 
    $ugly_characters = array(".",",","<",">","/","?",";",":","\'","\"","\\","|","[","{","]","}"," -","- ","--","_","=","+","!","@","#","$","%","^","&","*","(",")","»","'","\""); 
    $parsestring = str_replace ($ugly_characters , " ", $parsestring);


In een str_replace mag elke waarde een array zijn :)

PHP:
80
81
82
83
   // Check if bad, else count 
    $numOfWords=count($wordsarray);  
    for ($i=0; $i<$numOfWords; $i++)  
    {


Als je de count in de for loop stopt word deze elke keer uitgevoerd door de loop. Nu maar 1 maal.

PHP:
15
16
17
if(!$url) { // If no URL is given stop. 
    exit(); 
    }


EXIT????? EXIT????

[ Voor 107% gewijzigd door LuCarD op 22-11-2002 00:46 ]

Programmer - an organism that turns coffee into software.

Pagina: 1