Forum › PHP / SQL › Topic
[PHP] Links verzamelen
Onderstaande reguliere expressie gebruik ik om linkjes in een nieuwbrief te verzamelen zodat ik deze op kan slaan in de database.
Nu kwam ik er achter dat wanneer er een URL in een nieuwsbrief voorkomt in de vorm van "www.website.nl/index.php?a=1&b=2&b=3" dan breekt de expressie op de eerste "&" die hij tegen komt.
Wat moet ik aan deze reguliere expressie veranderen zodat deze niet breekt op de "&"?
![]() | Code | ![]() | ![]() | ![]() |
|
Nu kwam ik er achter dat wanneer er een URL in een nieuwsbrief voorkomt in de vorm van "www.website.nl/index.php?a=1&b=2&b=3" dan breekt de expressie op de eerste "&" die hij tegen komt.
Wat moet ik aan deze reguliere expressie veranderen zodat deze niet breekt op de "&"?
Ik gebruik voor dit soort dingen altijd deze website: http://gskinner.com/RegExr/
geeft een goede hulp bij het creeeren en debuggen van een reguliere expressie.
Hoop dat je er wat aan hebt, ook voor in de toekomst
waar ik iig op uitkwam is:
als reguliere expressie bij deze teksten:
waarbij alleen de <a href="LINK"></a> wordt meegepakt en de LINK-tekst wordt opgevangen.
geeft een goede hulp bij het creeeren en debuggen van een reguliere expressie.
Hoop dat je er wat aan hebt, ook voor in de toekomst

waar ik iig op uitkwam is:
![]() | Code | ![]() | ![]() | ![]() |
|
als reguliere expressie bij deze teksten:
![]() | Code | ![]() | ![]() | ![]() |
|
waarbij alleen de <a href="LINK"></a> wordt meegepakt en de LINK-tekst wordt opgevangen.
Dat programma heb ik ook op me PC staan op aanraden van een oud collega.
Alleen snap ik niets van Reguliere Expresies dus vandaar dat ik hier kwam met de vraag.
De regex werkt in het programma ideaal, alleen samen met preg_match_all werkt deze niet.
Hoe kan het dan dat deze niet werkt als ik hem in het script test?
Alleen snap ik niets van Reguliere Expresies dus vandaar dat ik hier kwam met de vraag.
De regex werkt in het programma ideaal, alleen samen met preg_match_all werkt deze niet.
Quote:
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '[' in ...
![]() | Code | ![]() | ![]() | ![]() |
|
Hoe kan het dan dat deze niet werkt als ik hem in het script test?
![]() | Code | ![]() | ![]() | ![]() |
|
Werkt ook niet, "Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 'g' in".
Dus ben ik even gaan kijken bij de link van Danny, via die pagina kwam ik op de modifiers uit; http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php. Maar daar zie ik geen 'g' bij staan?
Geprobeerd;
![]() | Code | ![]() | ![]() | ![]() |
|
De 'i' om de match case insensitive te maken maar dan krijg ik weer en hele andere melding;
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: missing terminating ] for character class at offset 23 in
Quote:
MikeVrind schreef:
Code
1
$linkPattern = '/(?<=href\=")[^]+?(?=") /g';
Werkt ook niet, "Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 'g' in".
Dus ben ik even gaan kijken bij de link van Danny, via die pagina kwam ik op de modifiers uit; http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php. Maar daar zie ik geen 'g' bij staan?
Geprobeerd;
Code
1
$linkPattern = '/(?<=href\=")[^]+?(?=") /i';
De 'i' om de match case insensitive te maken maar dan krijg ik weer en hele andere melding;
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: missing terminating ] for character class at offset 23 in
'g' is voor global, alle matches of alleen de eerste/laatste. Echter in PHP heb je hier verschillende functies voor preg_match en *_all (global).
Zowel preg_match als preg_match_all geven aan dat 'g' een unknown modifier is
Quote:
MikeVrind schreef:
Zowel preg_match als preg_match_all geven aan dat 'g' een unknown modifier is
Ja, omdat de functie preg_match_all als 'g' modifier geldt en preg_match zonder 'g'. Het is dus als verschillende functies toegepast ipv het gebruik van de 'g' modifier



Offline



