PHP nasıl bir get sorguda değişken değiştirebilirsiniz?

7 Cevap php

Ben bir URL var

http://example.com/test?xyz=27373&page=4&test=5

I-page=XYZ ile page=4 değiştirerek Dönüşümü istediğiniz

Ben nasıl yapabilirim preg_replace ile bu?

7 Cevap

Evet, kullanabilirsiniz

$oldurl = "http://test.com/test?xyz=27373&page=4&test=5"
$newurl = preg_replace("/page=\d+/", "page=XYZ", $oldurl);

Yoksa $_GET superglobalden URL yeniden inşa edebilir.

Eğer sayfa değere xyz değerini ayarlamak istiyor musunuz? Ben biraz daha belirtmeniz gerekebilir düşünüyorum. Ama bu regex bilmiyorum eğer değiştirmek kolaydır.

$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, '?'));
$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);

Bu dönecek

http://test.com/test?xyz=27373&page=4&test=5

içine

http://test.com/test?page=27373&test=5

Bu yapmanız aradığını değil eğer beni affedin, ama soru çok açık değildir.

Ben normal bir ifade ile bir şeyler yapabilirdi eminim. Verdiğin URL şu anda hallediyoruz biridir Ancak, zaten $ _REQUEST tüm istek değişkenler var.

Yani, değiştirmek istediğiniz değerleri yerine, URL'yi yeniden ve daha sonra yeni bir URL'ye yönlendirir.

Aksi takdirde, bir regexp öğretici bulalım.

Bu (ve o sayfada şu vea) kendi sayfa ise bu değişkenler $_GET adında bir global değişken görünür, ve (2 [{array_slice gibi bir şey kullanabilirsiniz )]} veya array_filter istenmeyen değişkenleri kaldırmak ve URL yeniden oluşturmak için.

Sadece bir dize olarak bu URL varsa, o zaman tam olarak bilgisinin çıkarılması için kriterler nelerdir? Teknik arasında hiçbir fark yok

...?xyz=27373&page=4&test=5

ve

...?test=5&xyz=27373&page=4

o yüzden sadece tüm çıkarmadan ama ilk parametre ne istediğiniz olmayabilir.

If you want to remove everything except the xyz param. Take a look at parse_url ve parse_str

Tam olarak ne yapmaya çalışıyorsun? Soru biraz belirsizdir.

$XYZ = $_GET['xyz']; $PAGE = $_GET['page'];

?

Başka her değeri değiştirin, ya da biri ile hem değiştirmek isteyen var mı?