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 ...".

Wat doe ik verkeerd?
Alvast bedankt!
Je stop het resultaat nergens in.

<?php $string = str_replace('?&', '&', $string); ?>
In mijn script doe ik dat wel, was ik hier vergeten bij te zetten.
Heb het aangepast.
$string = localhost/index.php?&var1=value

met str_replace: 'localhost/index.php?&var1=value'
met preg_replace bovengenoemde foutmelding en 'localhost/index.php?'
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!

Reageren