$test gedeelte uitlezen in php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kees van Norde

Kees van Norde

27/10/2015 17:13:47
Quote Anchor link
Hoi,

Ik zoek een manier om een gedeelte van een $nogwat uit te lezen.
Het verschilt steeds wat het is, ongeveer zoiets (puur voorbeelden):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$testje = "http://www.bla.nl/test/4567843/nogwat/ennogwat.html";

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$testje = "http://www.bla.nl/doei/3961324/nogwat/ennogwat.html";

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$testje = "http://www.bla.nl/hoi/0851534/nogwat/ennogwat.html";

Wat wel altijd aanwezig is is /PAARGETALLEN/.

Nu wil ik dus dat ik alleen het gedeelte /PAARGETALLEN/ eruit haal (en de rest niet).
Het zal iets moeten worden van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$getal = $testje(alleen /PAARGETALLEN/;
echo $getal;

Weet iemand hoe ik dit precies kan doen?

Gr. Kees.
Gewijzigd op 27/10/2015 17:14:53 door Kees van Norde
 
PHP hulp

PHP hulp

16/11/2024 08:55:48
 
Thomas van den Heuvel

Thomas van den Heuvel

27/10/2015 18:03:26
Quote Anchor link
Je zou door middel van patroonherkenning met behulp van reguliere expressies het patroon "/<hier enkel cijfers>/" uit een URL kunnen vissen.

Als je deze bewerking vaker wilt uitvoeren kan het handig zijn om deze in een functie onder te brengen.

Dit ziet er dan bijvoorbeeld als volgt uit:
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
22
23
24
25
26
27
28
29
30
31
32
<?php
// retourneert false indien geen match, en anders het getal
function getIdFromURL($input) {
    $match = false;
    preg_match('#/([0-9]+)/#', $input, $matches);
    if (count($matches) == 2) {
        $match = $matches[1]; // gebruik $matches[0] voor het getal inclusief /slashes/
    }
    return $match;
}


// vanaf hier enkele voorbeelden

$urls = array(
    'http://www.bla.nl/test/4567843/nogwat/ennogwat.html',
    'http://www.bla.nl/doei/3961324/nogwat/ennogwat.html',
    'http://www.bla.nl/hoi/0851534/nogwat/ennogwat.html',
    'http://www.bla.nl/oops/wut.html',
);


foreach ($urls as $url) {
    ?>
<h2><?php echo $url ?></h2><?php
    $match
= getIdFromURL($url);
    if ($match === false) {
        echo '[geen match] er kwam geen getal in de url voor';
    }
else {
        echo '[match] '.$match;
    }


    ?>
<hr /><?php
}
?>
Gewijzigd op 27/10/2015 18:04:27 door Thomas van den Heuvel
 
Kees van Norde

Kees van Norde

27/10/2015 19:05:53
Quote Anchor link
En hoe kan ik het zonder functie doen?
Ik red me aardig met basis php maar dit is me net even te moeilijk :)
Overigens hoeft er maar 1 url gecontroleerd te worden en niet 4 zoals in dit voorbeeld :)

Ben jij toevallig trouwens ook lid op sitemasters.be, ik had daar ook dezelfde vraag gesteld en kreeg exact hetzelfde antwoord :P

Bedankt alvast voor de hulp, erg fijn!

EDIT

Ik heb het een klein beetje aangepast naar 1 URL en wat minder code.
het is nu zo geworden en het werkt perfect!
Mogelijk kan het met nog wel minder code maar ik vind het al fijn dat ik de code nu begrijp en dat het werkt.
Mocht iemand het nog mooier kunnen coden is dat prima (en dan zal ik het vervangen) maar ik heb nu in ieder geval al deze werkende code:
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
// retourneert false indien geen match, en anders het getal
function getIdFromURL($input) {
    $match = false;
    preg_match('#/([0-9]+)/#', $input, $matches);
    if (count($matches) == 2) {
        $match = $matches[0]; // gebruik $matches[0] voor het getal inclusief /slashes/
    }
    return $match;
}

$url = $link;

    $match = getIdFromURL($url);
    if ($match === false) {
        echo '[geen match] er kwam geen getal in de url voor';
exit;
    } else {
        echo $match;
    }
Gewijzigd op 27/10/2015 19:35:31 door Kees van Norde
 
Peter K

Peter K

27/10/2015 19:43:44
Quote Anchor link
Als het deel met cijfers altijd op dezelfde plek zit t.o.v. het begin van de data kun je met behulp van een Explode ook goed uit de voeten denk ik.
 
Thomas van den Heuvel

Thomas van den Heuvel

27/10/2015 19:48:13
Quote Anchor link
Peter K op 27/10/2015 19:43:44:
Als het deel met cijfers altijd op dezelfde plek zit t.o.v. het begin van de data kun je met behulp van een Explode ook goed uit de voeten denk ik.

Dan moet je nog steeds op een of andere manier constateren dat dat deel enkel uit cijfers bestaat.

Uit de oorspronkelijke spec werd ook niet expliciet duidelijk of de numerieke passage altijd op dezelfde plek zit.
 
Peter K

Peter K

28/10/2015 08:04:27
Quote Anchor link
Thomas van den Heuvel op 27/10/2015 19:48:13:
Peter K op 27/10/2015 19:43:44:
Als het deel met cijfers altijd op dezelfde plek zit t.o.v. het begin van de data kun je met behulp van een Explode ook goed uit de voeten denk ik.

Dan moet je nog steeds op een of andere manier constateren dat dat deel enkel uit cijfers bestaat.

Uit de oorspronkelijke spec werd ook niet expliciet duidelijk of de numerieke passage altijd op dezelfde plek zit.


Dit kun je eventueel doen met is_numeric()

Zoals ik het begrepen heb staat de cijfercombinatie steeds op dezelfde plaats.
Gewijzigd op 28/10/2015 08:04:42 door Peter K
 



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.