2013-08-11 2 views
0
<?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: Как удалить все параметры (& языки = еп, & языки = ск) из строки?str_replace в цикле Еогеасп

Спасибо заранее

+1

Вы ищете [ 'parse_url'] (http://www.php.net/parse_url), возможно, с [ 'http_build_url'] (http://www.php.net/http_build_url), или это эквивалент PHP-кода. – Wrikken

ответ

2

Что вы делаете, создает новую переменную $new каждый раз, так что не будет ничего хорошего с $url делать. Попробуйте назначить str_replace вернуться к своей первоначальной переменной, как:

$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 
0

альтернатива:

Первое:

$url = "http://localhost/news&lang=en&lang=sk&lang=sk&lang=sk&lang=en"; 
echo preg_replace("#&lang=(en|sk)#", "", $url); 

Второе:

$url = "http://localhost/news&lang=en&lang=sk&lang=sk&lang=sk&lang=en"; 
echo str_replace(array("&lang=en", "&lang=sk"), "", $url); 

Update: долго массив $ lang:

$url = "http://localhost/news&lang=en&lang=sk&lang=sk&lang=sk&lang=en"; 
echo preg_replace("#&lang=(".implode("|", $lang).")#", "", $url); 
+0

массив '$ langs' может содержать больше значений –

+0

@ Ing.MichalHudak: см. Обновление :) –