$test gedeelte uitlezen in php
Ik zoek een manier om een gedeelte van een $nogwat uit te lezen.
Het verschilt steeds wat het is, ongeveer zoiets (puur voorbeelden):
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:
Weet iemand hoe ik dit precies kan doen?
Gr. Kees.
Gewijzigd op 27/10/2015 17:14:53 door Kees van Norde
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)
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
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
}
?>
// 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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
}
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
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.
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.
Thomas van den Heuvel op 27/10/2015 19:48:13:
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 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