Door
Hans W
op 23-05-2011 16:20
gewijzigd op 23-05-2011 16:30
1.406 views
Ik heb een scriptje die in sommige gevallen ?& in de url opleverd.
De kortste en snelste manier om dit op te vangen als dit ontstaat, is een replacement aan het eind.
maar als ik <?php $string = str_replace('?&', '?', $string); ?> gebruik, gebeurt er niks.
Als ik <?php $string = preg_replace('?&', '?', $string); ?> krijg ik de melding "Warning: preg_replace() [function.preg-replace]: No ending delimiter '?' found ...".
Bij die preg_replace ga je helemaal verkeerd met je pattern. Want elk pattern moet in een regex beginnen met / en eindigen met /. Daarnaast is ? in regexen een metacharacter, wat betekend dat je deze moet escapen. De juiste regex wordt dus:
<?php
$string = preg_replace('/\?&/', '?', $string);
?>
Maar de str_replace zou volgens mij gewoon kunnen werken.
Oke, bedankt voor de uitleg van preg_replace, snap ik dat ook.
Mijn excuses, de fout zat niet in str_replace, ik voerde hem alleen te vroeg uit (voor het samenvoegen van de twee delen van de url met ?, dus dan kan-ie '?&' dan inderdaad niet vinden).
Dit had ik even over het hoofd gezien.
Iig bedankt allemaal!