PHP preg_replace URL alanı

2 Cevap php

Bu dize bakın:

$string = "http://www.url.com/?fieldA=123&fieldB=456&fieldC=789";

Ne preg_replace komutu ben tamamen kaldırmak gerekiyor, "fieldB" her zaman olumlu olmayan bir ondalık sayısal değeri vardır (ama mutlaka üç basamaklı uzun) varsayarsak dize sonra okuyacak böyle :

$string = "http://www.url.com/?fieldA=123&fieldC=789";

2 Cevap

Bu deneyin:

$string = preg_replace('/&fieldB=[0-9]+/', '', $string);

Çalışma örnek kod:

$string = "http://www.url.com/?fieldA=123&fieldB=456&fieldC=789";
$string = preg_replace('/&fieldB=[0-9]+/', '', $string);
echo $string;

//gives http://www.url.com/?fieldA=123&fieldC=789

Ile preg_replace(),

$url = preg_replace('!&?fieldB=\d+!', '', $string);

Siz de daha önce & kaldırmanız gerekir. Ayrıca, kullanmayın [0-9]. \d yerine kullanın.

Söyleniyor, PHP URL'leri işlemek için iyi bir doğal işlevleri vardır. Bunu yapmanın bir başka yolu:

$url = parse_url($string);
parse_str($url['query'], $query);
unset($query['fieldB']);
$url['query'] = http_build_query($query);
$string = http_build_url($url);

Note: Ne yazık ki, HTTP extension bunu yüklemek zorunda standart bir uzantısı değildir.