Hey allen!
Voor mijn werk ben ik bezig een migratiescript te schrijven klanten van de oude versie van ons CMS naar de nieuwe versie over te zetten. Daarbij moeten ook linkjes naar bestanden die middels het CMS zijn geupload, vervangen worden. Die linkjes zien er zo uit:
oud: http://www.somesite.com/?file=243 (243 is een voorbeeld id, kan elk getal zijn)
nieuw: http://www.somesite.com/file/some-fancy-slug
Nou wat het schrijven van een functie die zo'n oude id omzet in de slug van het nieuwe systeem, geen probleem. Wat wel een probleem is, is het vinden van alle oude linkjes op een pagina middels preg_match_all
De volgende pattern had ik bedacht, met hulp van een collega: '/^.*(http:\/\/.+\/\?file=(\d+)).*$/mis'
Probleem is dat deze op een pagina met meerdere matches, maar 1 match vindt. Moet ik ook eerlijk bij zeggen, dat de pattern mede bedacht is door mijn collega, en ik sommige keuzes niet helemaal begrijp.
Dus ben ik zelf opnieuw begonnen, en heb ik geprobeerd het zo makkelijk mogelijk te houden. Ik kwam uit op het volgende: '/.*?http:\/\/.+\/\?file=(\d+).*?/is' Geeft er ook maar 1 terug!
Ik gebruik voor het testen de volgende site: http://www.functions-online.com/preg_match_all.html
Als testdata gebruik ik gewoon dit:
"http://www.aram-rocks.com/?file=132
http://www.aram-rocks.com/?file=133
http://www.aram-rocks.com/?file=134"
(met enters ertussen dus)
Kan iemand me opweg helpen, met hoe ik meerdere matches kan vinden?
Voor mijn werk ben ik bezig een migratiescript te schrijven klanten van de oude versie van ons CMS naar de nieuwe versie over te zetten. Daarbij moeten ook linkjes naar bestanden die middels het CMS zijn geupload, vervangen worden. Die linkjes zien er zo uit:
oud: http://www.somesite.com/?file=243 (243 is een voorbeeld id, kan elk getal zijn)
nieuw: http://www.somesite.com/file/some-fancy-slug
Nou wat het schrijven van een functie die zo'n oude id omzet in de slug van het nieuwe systeem, geen probleem. Wat wel een probleem is, is het vinden van alle oude linkjes op een pagina middels preg_match_all
De volgende pattern had ik bedacht, met hulp van een collega: '/^.*(http:\/\/.+\/\?file=(\d+)).*$/mis'
Probleem is dat deze op een pagina met meerdere matches, maar 1 match vindt. Moet ik ook eerlijk bij zeggen, dat de pattern mede bedacht is door mijn collega, en ik sommige keuzes niet helemaal begrijp.
Dus ben ik zelf opnieuw begonnen, en heb ik geprobeerd het zo makkelijk mogelijk te houden. Ik kwam uit op het volgende: '/.*?http:\/\/.+\/\?file=(\d+).*?/is' Geeft er ook maar 1 terug!
Ik gebruik voor het testen de volgende site: http://www.functions-online.com/preg_match_all.html
Als testdata gebruik ik gewoon dit:
"http://www.aram-rocks.com/?file=132
http://www.aram-rocks.com/?file=133
http://www.aram-rocks.com/?file=134"
(met enters ertussen dus)
code:
1
2
3
4
5
6
7
8
9
| array ( 0 => array ( 0 => 'http://www.aram-rocks.com/?file=132 http://www.aram-rocks.com/?file=133 http://www.aram-rocks.com/?file=134', 1 => '134', ), ) |
Kan iemand me opweg helpen, met hoe ik meerdere matches kan vinden?