Reputation: 5612
<?php
$url = "http://localhost/news&lang=en&lang=sk&lang=sk&lang=sk&lang=en";
$langs = array ('sk', 'en');
foreach ($langs as $lang) {
$search = '&lang='.$lang;
$new = str_replace($search, "", $url);
}
echo $new; // output: http://localhost/news
?>
Q: How to delete all parameters (&lang=en, &lang=sk) from string ?
Thank you in advance
Upvotes: 0
Views: 7906
Reputation:
An Alternative:
First:
$url = "http://localhost/news&lang=en&lang=sk&lang=sk&lang=sk&lang=en";
echo preg_replace("#&lang=(en|sk)#", "", $url);
Second:
$url = "http://localhost/news&lang=en&lang=sk&lang=sk&lang=sk&lang=en";
echo str_replace(array("&lang=en", "&lang=sk"), "", $url);
Update: for long array of $lang:
$url = "http://localhost/news&lang=en&lang=sk&lang=sk&lang=sk&lang=en";
echo preg_replace("#&lang=(".implode("|", $lang).")#", "", $url);
Upvotes: 0
Reputation: 2982
You want to use parse_url() http://www.php.net/manual/en/function.parse-url.php and then http_build_query() http://php.net/manual/en/function.http-build-query.php
Upvotes: 0
Reputation: 15213
What you are doing is creating a new variable $new
each time so that won't do anything good with the $url
.
Try to assign the str_replace
back to its original variable like:
$url = "http://localhost/news&lang=en&lang=sk&lang=sk&lang=sk&lang=en";
$langs = array ('sk', 'en');
foreach ($langs as $lang) {
$search = '&lang='.$lang;
$url = str_replace($search, "", $url);
}
echo $url; // output: http://localhost/news
Upvotes: 2