login  Naam:   Wachtwoord: 
Registreer je!
 Forum

$test gedeelte uitlezen in php

Offline knorde - 27/10/2015 17:40
Avatar van knordeNieuw lid Hoi,

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

  1. $testje = "http://www.bla.nl/doei/3961324/nogwat/ennogwat.html";

  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:
  1. $getal = $testje(alleen /PAARGETALLEN/;
  2. echo $getal;

Weet iemand hoe ik dit precies kan doen?

Gr. Kees.

3 antwoorden

Gesponsorde links
Offline Thomas - 27/10/2015 17:59
Avatar van Thomas Moderator 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:
  1. <?php
  2. // retourneert false indien geen match, en anders het getal
  3. function getIdFromURL($input) {
  4. $match = false;
  5. preg_match('#/([0-9]+)/#', $input, $matches);
  6. if (count($matches) == 2) {
  7. $match = $matches[1]; // gebruik $matches[0] voor het getal inclusief /slashes/
  8. }
  9. return $match;
  10. }
  11.  
  12. // vanaf hier enkele voorbeelden
  13.  
  14. $urls = array(
  15. 'http://www.bla.nl/test/4567843/nogwat/ennogwat.html',
  16. 'http://www.bla.nl/doei/3961324/nogwat/ennogwat.html',
  17. 'http://www.bla.nl/hoi/0851534/nogwat/ennogwat.html',
  18. 'http://www.bla.nl/oops/wut.html',
  19. );
  20.  
  21. foreach ($urls as $url) {
  22. ?><h2><?php echo $url ?></h2><?php
  23. $match = getIdFromURL($url);
  24. if ($match === false) {
  25. echo '[geen match] er kwam geen getal in de url voor';
  26. } else {
  27. echo '[match] '.$match;
  28. }
  29.  
  30. ?><hr /><?php
  31. }
Offline knorde - 27/10/2015 19:05 (laatste wijziging 27/10/2015 19:37)
Avatar van knorde Nieuw lid 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 phphulp.nl, ik had daar ook dezelfde vraag gesteld en kreeg exact hetzelfde antwoord 

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:
  1. // retourneert false indien geen match, en anders het getal
  2. function getIdFromURL($input) {
  3. $match = false;
  4. preg_match('#/([0-9]+)/#', $input, $matches);
  5. if (count($matches) == 2) {
  6. $match = $matches[0]; // gebruik $matches[0] voor het getal inclusief /slashes/
  7. }
  8. return $match;
  9. }
  10.  
  11. $url = $link;
  12.  
  13. $match = getIdFromURL($url);
  14. if ($match === false) {
  15. echo '[geen match] er kwam geen getal in de url voor';
  16. } else {
  17. echo $match;
  18. }
Offline Thomas - 28/10/2015 15:22 (laatste wijziging 28/10/2015 15:22)
Avatar van Thomas Moderator Als je deze code slechts eenmalig gebruikt, heb je geen functie nodig.

Bovenstaande code kan dan vervangen worden door:
  1. <?php
  2. $link = '...';
  3. preg_match('#/([0-9]+)/#', $link, $matches);
  4. if (count($matches) == 2) {
  5. echo $matches[0]; // $matches[0] met slashes, $matches[1] zonder slashes
  6. } else {
  7. echo '[geen match] er kwam geen getal in de url voor';
  8. }
  9. ?>
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.302s