PHP preg_replace поле URL - PullRequest
       14

PHP preg_replace поле URL

0 голосов
/ 01 апреля 2010

См. Эту строку:

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

Предполагая, что "fieldB" всегда имеет положительное недесятичное числовое значение (но не обязательно длиной в три цифры), какую команду preg_replace нужно полностью удалитьтак, что строка будет читать:

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

Ответы [ 4 ]

3 голосов
/ 01 апреля 2010
$string = preg_replace('/&?fieldB=[0-9]+/', '', $string);
1 голос
/ 02 апреля 2010

С preg_replace():

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

Вы должны также удалить & перед ним.Кроме того, не используйте [0-9].Вместо этого используйте \d.

При этом PHP имеет хорошие встроенные функции для управления URL-адресами.Еще один способ сделать это:

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

Примечание: К сожалению, расширение HTTP не является стандартным расширением, поэтому его необходимо установить.

1 голос
/ 01 апреля 2010

Попробуйте это:

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

Рабочий пример кода:

$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
0 голосов
/ 01 апреля 2010
$string = preg_replce('/fieldB=([0-9]+)/', '', $string);
...