SELECT en REGEXP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Femke

femke

25/09/2007 21:45:00
Quote Anchor link
Ik wil graag de domeinnamen van links weergeven en deze het liefst ook gelijk tellen, dit moet met regexp en group by maar hoe doe ik dat precies? Ik kan er niets over vinden op het web. Ik wil dus bv

http://www.hallo.com/hallo1
http://www.hallo.com/hallo3/jaja
http://www.amsterdam.nl/bezoek/hallo
http://www.rotterdam.nl/vvv

ik wil dus een lijst krijgen met

http://www.hallo.com 2
http://www.amsterdam.nl 1 etc etc ..

EDIT de domeinen staan zo al in mijn database! Voordat ik hier een opmerking over krrijg dat ik ook makkelijk met php al de domein eruit kan filteren :)
Gewijzigd op 01/01/1970 01:00:00 door Femke
 
PHP hulp

PHP hulp

14/11/2024 23:07:40
 
Femke

femke

25/09/2007 23:09:00
Quote Anchor link
niemand?
 
- -

- -

25/09/2007 23:10:00
Quote Anchor link
Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen.
Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig deAfbeelding knop om je tekst aan te passen.
 
Jan Koehoorn

Jan Koehoorn

25/09/2007 23:34:00
Quote Anchor link
Een query met een regex wordt misschien best ingewikkeld. Als ik jou was, zou ik gewoon mijn tabel leegtrekken en zoiets doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
    $urls
[] = 'http://www.hallo.com/hallo1';
    $urls[] = 'http://www.hallo.com/hallo3/jaja';
    $urls[] = 'http://www.amsterdam.nl/bezoek/hallo';
    $urls[] = 'http://www.rotterdam.nl/vvv';
    
    $stats = array ();
    
    foreach ($urls as $url) {
        if (isset ($stats[substr($url, 0, strpos ($url, '/', 7))]['aantal'])) {
            $stats[substr($url, 0, strpos ($url, '/', 7))]['aantal']++;
        }

        else {
            $stats[substr($url, 0, strpos ($url, '/', 7))]['aantal'] = 1;
        }
    }

    
    foreach ($stats as $key => $val) {
        echo '<p>' . $key . ': ' . $val['aantal'] . '</p>';
    }

?>



Edit:
Edit 2:

Ik vond het toch wel een leuke puzzel en heb deze query in elkaar gesleuteld, die precies hetzelfde doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT
SUBSTRING_INDEX(ulr,'\/',3) AS domein,
COUNT(id) AS aantal
FROM urls
GROUP BY domein
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Femke

femke

27/09/2007 13:17:00
Quote Anchor link
Beste Jan koehoorn, hartelijk bedankt! ik ga zo gelijk kijken of het werkt, nu weet ik in welke hoek ik het moet zoeken.
 
Femke

femke

28/09/2007 09:26:00
Quote Anchor link
De SQL query werkt prima, alleen failed hij op bv

http://www.domein.nl/test/pagina
http://www.domein.nl/etc
http://www.domein.nl/test/rood/pag

hij telt nu alleen de tweede aangezien hij na de 2 slashes moet tellen, is dit niet facultatief in te stellen dus 3 of meer x?

Jan Koehoorn schreef op 25.09.2007 23:34:
Een query met een regex wordt misschien best ingewikkeld. Als ik jou was, zou ik gewoon mijn tabel leegtrekken en zoiets doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
    $urls
[] = 'http://www.hallo.com/hallo1';
    $urls[] = 'http://www.hallo.com/hallo3/jaja';
    $urls[] = 'http://www.amsterdam.nl/bezoek/hallo';
    $urls[] = 'http://www.rotterdam.nl/vvv';
    
    $stats = array ();
    
    foreach ($urls as $url) {
        if (isset ($stats[substr($url, 0, strpos ($url, '/', 7))]['aantal'])) {
            $stats[substr($url, 0, strpos ($url, '/', 7))]['aantal']++;
        }

        else {
            $stats[substr($url, 0, strpos ($url, '/', 7))]['aantal'] = 1;
        }
    }

    
    foreach ($stats as $key => $val) {
        echo '<p>' . $key . ': ' . $val['aantal'] . '</p>';
    }

?>



Edit:
Edit 2:

Ik vond het toch wel een leuke puzzel en heb deze query in elkaar gesleuteld, die precies hetzelfde doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT
SUBSTRING_INDEX(ulr,'\/',3) AS domein,
COUNT(id) AS aantal
FROM urls
GROUP BY domein
Gewijzigd op 01/01/1970 01:00:00 door femke
 
Klaasjan Boven

Klaasjan Boven

28/09/2007 09:34:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
CREATE FUNCTION domain_of_url (url varchar(255))
RETURNS varchar(255)
RETURN SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(TRIM(LEADING
"https://" FROM TRIM(LEADING "http://" FROM TRIM(url))), "/", 1), ":",
1), ".", if(url LIKE "%.org.__%" OR url LIKE "%.net.__%" OR url LIKE
"%.com.__%" OR url LIKE "%.__.us%" OR url LIKE "%.co.__%" OR url LIKE
"%.__.uk%", -3, -2) );

als je mysql5 draait moet zoiets geen werken
te vinden op
deze site
gevonden op GOOGLE

Edit:

deze functie haalt het domein uit de url en deze kan je dan tllen
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.