thể trùng lặp:
Change single variable value in querystringphp - thêm/cập nhật một tham số trong một url
tôi tìm thấy chức năng này để thêm hoặc cập nhật một tham số để một url nào đó, nó hoạt động khi tham số cần phải được thêm vào, nhưng nếu tham số tồn tại nó không thay thế nó - xin lỗi tôi không biết nhiều về regex ai cũng có thể có một cái nhìn:
function addURLParameter ($url, $paramName, $paramValue) {
// first check whether the parameter is already
// defined in the URL so that we can just update
// the value if that's the case.
if (preg_match('/[?&]('.$paramName.')=[^&]*/', $url)) {
// parameter is already defined in the URL, so
// replace the parameter value, rather than
// append it to the end.
$url = preg_replace('/([?&]'.$paramName.')=[^&]*/', '$1='.$paramValue, $url) ;
} else {
// can simply append to the end of the URL, once
// we know whether this is the only parameter in
// there or not.
$url .= strpos($url, '?') ? '&' : '?';
$url .= $paramName . '=' . $paramValue;
}
return $url ;
}
đây là một ví dụ về những gì không làm việc:
http://www.mysite.com/showprofile.php?id=110&l=arabic
nếu tôi gọi addURLParameter với l = tiếng anh, tôi nhận được
http://www.mysite.com/showprofile.php?id=110&l=arabic&l=english
cảm ơn trước.
Chức năng có vẻ ổn với tôi. Bạn có thể đưa ra một ví dụ về một tham số mà bạn đang cố thay thế hay không và kết quả bạn đang nhận được là gì? –
@Bruce Alderman được thêm vào ví dụ. –
Tôi không chắc chắn những gì sai; Tôi đã chạy một vài thử nghiệm ở đây và không thể tạo lại lỗi. Bất kể, nếu bạn không hiểu các biểu thức thông thường, chúng sẽ không phải là giải pháp tốt nhất. Điều gì sẽ xảy ra khi bạn cần duy trì mã? –