12 berichten aan het bekijken - 1 tot 12 (van in totaal 12)
  • Q:
    Bijdrager
    computer space

    Verwijderd

    Verwijderd

    Bijdrager
    tijs

    makkelijker nog:

    $base = $_SERVER[‘HTTP_HOST’];
    $sub = $_SERVER[‘REQUEST_URI’];

    Bijdrager
    computer space

    Ja, daarmee haal ik de huidige pagina op. Dat is niet de vraag. Voor de duidelijkheid: ik heb deze uitgelezen :
    [code:1:684a84f5c6]$ref=($_SERVER[’HTTP_REFERER’]);[/code:1:684a84f5c6]
    en die wil ik dus opknippen.

    Bijdrager
    Emiel

    Ik zou hiervoor de functies substr() en strpos() gebruiken. Eerst testen of er een http:// bestaat, zo ja die dan wegknippen en vervolgens het deel tot aan de volgende slash gebruiken als ‘base’.

    Bijdrager
    computer space

    bedankt! Dit is het geworden:
    [code:1:ec43758b25]$ref = str_replace("http://","",$ref);
    $pos = strpos ($ref, "/");
    $sub = substr ($ref, ($pos+1));
    $ref = substr ($ref, 0, ($pos));[/code:1:ec43758b25]
    Ik moet niet te veel naar php.net gaan merk ik. Wat een omslachtige uitleg daar van functies en hele slechte voorbeelden. Ik pak nu maar phphulp.nl erbij.

    Inactief
    Anoniem
    ”Martiniman”

    bedankt! Dit is het geworden:
    [code:1:e96b310893]$ref = str_replace("http://","",$ref);
    $pos = strpos ($ref, "/");
    $sub = substr ($ref, ($pos+1));
    $ref = substr ($ref, 0, ($pos));[/code:1:e96b310893]

    Als je een URL hebt als…
    [code:1:e96b310893]http://www.macosx.nl/forum/viewtopic.php?t=75731[/code:1:e96b310893]
    …en je wilt hebben…
    $base met “www.macosx.nl/forum”
    en $sub met “viewtopic.php?t=75731”
    …dan levert bovenstaande code wel problemen op. Maar wellicht komen dergelijke URL’s niet voor in de situatie waarvoor je deze code wilt gebruiken.

    Bijdrager
    computer space

    In dat geval wil ik ook:

    $base=’www.macosx.nl’
    $sub=’forum/viewtopic.php?t=75731′

    En volgens mij krijg ik dat met deze code in die situatie ook.

    Bijdrager
    Sen

    Met parse_url zou je al vrij ver moeten geraken. Je kan eventueel met parse_str de query nog verder opdelen.

    Bijdrager
    computer space

    Kijk! Inderdaad ook nog een alles-in-een functie. 8)

    Bijdrager
    MacTommy

    En een meer generieke oplossing zou zijn om het met een reguliere expressie te doen.
    Ik heb meer ervaring met Perl, dus ik weet niet hoe het precies moet in PHP, maar hier staat een aardige tutorial…

    Bijdrager
    MacTommy

    Waar het (denk ik) om gaat:

    preg_split

    (PHP 3>= 3.0.9, PHP 4 )
    preg_split — Split string by a regular expression
    Description
    array preg_split ( string pattern, string subject [, int limit [, int flags]])

    Returns an array containing substrings of subject split along boundaries matched by pattern.

    In jouw geval zou je dus splitten op een ‘/’, en dan gooi je het eerste deel weg als het ‘http:’ is, en met de rest kan je verder.

    Bijdrager
    MacTommy

    Of, wat nog mooier, en generieker is (en precies antwoord op je vraag, volgens mij…):

    [code:1:ea866fe72e]<?php
    // get host name from URL
    preg_match("/^(http://)?([^/]+)/i",
    "http://www.php.net/index.html", $matches);
    $host = $matches[2];

    // get last two segments of host name
    preg_match("/[^./]+.[^./]+$/", $host, $matches);
    echo "domain name is: {$matches[0]}n";
    ?>[/code:1:ea866fe72e]

12 berichten aan het bekijken - 1 tot 12 (van in totaal 12)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.