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:
<?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
}
?>
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:
// 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;
}
[quote="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.