[OPGELOST] RegEx id uit url halen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Leon Kunst

Leon Kunst

22/04/2009 21:24:00
Quote Anchor link
Heren,

Het wil me maar niet lukken, ik heb al verschillende mogelijkheden geprobeerd etc, maar een match krijg ik niet...

Ik heb bijv:

$url = 'http://www.site.nl/234" class="l"';

Nu wil ik met behulp van een preg_match het (willekeurige) getal uit de $url halen en in een variabele stoppen...

deze heb ik oa al geprobeerd
'^/(http://www.moviemeter.nl/film/)(.*?)" class="l"$/is',"\${1}"

en nog een paar, maar allen zonder succes...

tevens moet er ook gekeken worden, of de match wel mogelijk is (dus dat ie voor komt in $url.

Wie o wie heeft er wat meer kaas van gegeten dan ik?
Gewijzigd op 01/01/1970 01:00:00 door Leon Kunst
 
PHP hulp

PHP hulp

02/05/2024 09:45:33
 
TJVB tvb

TJVB tvb

22/04/2009 21:40:00
Quote Anchor link
Als de url opbouw steeds hetzelfde is kun je het ook zo doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
$url = 'http://www.site.nl/234" class="l"';
$split = explode('/',$url);
$cijfers = explode('"',$split[3],2);
print_r($cijfers);
$getal = $cijfers[0];
?>
 
Leon Kunst

Leon Kunst

22/04/2009 21:50:00
Quote Anchor link
mja dat is het hem juist... het aantal getallen kan veranderen...

want wat jij had, had ik ook al... tot ik me bedacht dat het aantal cijfers kan veranderen...

en dan zit ik zeker aan een pregmatch vast???

Toch bedankt voor je moeite!
 
Joost

Joost

22/04/2009 21:51:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$url
= 'http://www.site.nl/234" class="l"';
preg_match("#(http://www.site.nl/)([0-9]+)\" class=\"l\"#i", $url, $aMatch);
echo $aMatch[2];
[
/code]
Gewijzigd op 01/01/1970 01:00:00 door Joost
 
Leon Kunst

Leon Kunst

22/04/2009 22:06:00
Quote Anchor link
Hmm....

Als ik $url handmatig invul werkt ie wel,

maar $url is eigenlijk een broncode wat uitgelezen wordt.

en als ik zelf zoek in de bron, staat ie er wel netjes tussen, maar hij geeft geen resultaten terug...

waar de pregmatch op zoekt, staat wel midden in de bron, er staat dus tekst links en rechts nog van de pregmatch... maar dat moet niet uitmaken toch?
 
Jelmer -

Jelmer -

22/04/2009 22:16:00
Quote Anchor link
Alles tussen ( en ) wordt in $match gezet. Alleen je id hoeft daarin, dus alleen die hoeft maar tussen haakjes. Verder heeft de punt een speciale betekenis in een regexp (matcht namelijk volgens mij 1 karakter, no matter wat voor karakter dat is) dus die moet je nog even escapen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
preg_match('{http://www\.site\.nl/([0-9]+)}', $url, $match);
?>
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
TJVB tvb

TJVB tvb

22/04/2009 22:18:00
Quote Anchor link
Leon, ik kijk niet naar het aantal getallen, alleen naar de aantal / voor het getal (het is de derde /) en de " achter het getal.
Maar als dit maar een klein stukje van de bron is wordt het anders.
 
Leon Kunst

Leon Kunst

22/04/2009 22:29:00
Quote Anchor link
edit:

Heren, het is opgelost:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
   $Parts
= explode("<a href=\"http://www.site.nl/sub/", $url);
   $id = explode('"', $Parts[1]);
   return $id[0];
?>


kheb wat irrelevante code achterwege gelaten, maar dit geeft alleen maar getallen terug, werkt (zoals het nu lijkt) goed dus.

status: solved
Gewijzigd op 01/01/1970 01:00:00 door Leon Kunst
 



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.