J'ai une URLComment puis-je remplacer une variable dans une requête get en PHP?
http://example.com/test?xyz=27373&page=4&test=5
que je veux Transformée en remplaçant le page=4
par page=XYZ
comment puis-je faire avec preg_replace
?
J'ai une URLComment puis-je remplacer une variable dans une requête get en PHP?
http://example.com/test?xyz=27373&page=4&test=5
que je veux Transformée en remplaçant le page=4
par page=XYZ
comment puis-je faire avec preg_replace
?
Oui, vous pouvez utiliser
$oldurl = "http://test.com/test?xyz=27373&page=4&test=5"
$newurl = preg_replace("/page=\d+/", "page=XYZ", $oldurl);
Ou vous pouvez reconstruire l'URL de $_GET
superglobale.
Qu'essayez-vous exactement de faire? La question est un peu floue.
$ XYZ = $ _GET ['xyz']; $ PAGE = $ _GET ['page'];
?
Voulez-vous remplacer chaque valeur par une autre ou remplacer les deux par une?
$url = 'http://test.com/test?xyz=27373&page=4&test=5';
preg_match('/xyz=([^&]+)/', $url, $newpage);
$new = preg_replace('/page=([^&]+)/', $newpage[0], $url);
$new = preg_replace('/xyz=([^&]+)&/', '', $new);
Cela tournera
http://test.com/test?xyz=27373&page=4&test=5
dans
http://test.com/test?page=27373&test=5
Pardonne-moi si ce n'est pas ce que vous cherchez à faire, mais votre question est pas tout à fait clair.
Je suis sûr que vous pourriez faire quelque chose avec une expression régulière. Toutefois, si l'adresse URL que vous avez indiquée est celle que vous utilisez actuellement, vous avez déjà toutes les variables de demande dans $ _Request. Donc, reconstruisez l'URL en remplaçant les valeurs que vous voulez remplacer, puis redirigez-les vers la nouvelle URL.
Sinon, allez trouver un tutoriel regexp.
Si ceci est votre propre page (et vous êtes actuellement sur cette page) ces variables apparaîtront dans une variable globale nommée $_GET
, et vous pouvez utiliser quelque chose comme array_slice
, unset
ou array_filter
pour éliminer les variables non désirées et régénérer l'URL .
Si vous avez juste cette URL comme une chaîne, alors quels sont exactement les critères pour supprimer l'information? Techniquement, il n'y a pas de différence entre
...?xyz=27373&page=4&test=5
et
...?test=5&xyz=27373&page=4
si juste enlever tous, mais le premier paramètre pourrait ne pas être ce que vous voulez.
Si vous voulez tout supprimer sauf le paramètre xyz
. Jetez un oeil à parse_url
et parse_str
Voulez-vous définir la valeur de xyz à la valeur de la page?Je pense que vous pourriez avoir besoin de spécifier un peu plus. Mais c'est facile à modifier si vous ne connaissez pas regex.
$url = 'http://test.com/test?xyz=27373&page=4&test=5';
$urlQuery = parseUrl($url, PHP_URL_QUERY);
parse_str($urlQuery, $queryData);
$queryData['page'] = $queryData['xyz'];
unset($queryData['xyz']);
$query = http_build_query($queryData);
$outUrl = substr_replace($url, $query, strpos($url, '?'));