PHP String operasyon

4 Cevap php

Ben şimdi / sayfa.html gibi uri ile uğraşıyorum? K1 = 1 & k2 = 2

$str = preg_replace('/[&\?]' . $k . '=[^&]*/',"",$str);

$ K silmek için yukarıdaki amaçlar uri yer ile ilgili değil, aynı zamanda siler? yanlış.

Doğru olanı yapmak nasıl?

4 Cevap

Bu deneyin:

preg_replace('/(?:(\?)|&)' . $k . '=[^&]*/', '$1', $str)

Bu ek kullanmak preg_quote on $k. Olmalıdır

Edit İşte yukarıda bir genişletilmiş versiyonu düzeltmek gerekir var problem described by beggs:

/(?:(\?)|&)arg=[^&]*(?(1)(?:&|$))/

(?(1)(?:&|$)) epxression ilk grup bir eşleşme bulursa, bir conditional expression o kullanılır olmasıdır. ? bulunursa Yani, & o parametrenin sondaki kaldırılır.

Bu "?" Eğer maçta bunu dahil çünkü yerine boş kullanıyorsunuz silme var. Değişken eşleştirme "$k" kaldırmak ve bırakmak "?" verilen kod bamya kullanabilirsiniz, ancak bu "$k ==" "{farkında olmak [(4)]} & "" arta kalan not, "/page.html?&k2=2" sonucu dize olacaktır ".

URL'ler ve sorgu dizeleri ile ilgili iseniz, parse_url URL bileşenleri ayıklamak ve parse_str sorgu dizesi bit ayıklamak için kullanmak isteyebilirsiniz. Bunun yerine regexes ile ilgili argümanlar dizisini işlemek için çok daha kolay olacak. Daha sonra http_build_query tekrar bir araya koymak için kullanabilirsiniz.