【问题标题】:str_replace in foreach loopforeach 循环中的 str_replace
【发布时间】:2013-08-11 18:48:31
【问题描述】:
<?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

?>

问:如何从字符串中删除所有参数(&lang=en,&lang=sk)?

提前谢谢你

【问题讨论】:

标签: php foreach str-replace


【解决方案1】:

您所做的是每次都创建一个新变量$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

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      另一种选择:

      第一:

      $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);
      

      更新:对于 $lang 的长数组:

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

      【讨论】:

      • 数组$langs可以包含更多值
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      • 2021-05-28
      • 2023-04-02
      相关资源
      最近更新 更多