【问题标题】:Replacing part of string in Array PHP替换数组PHP中的部分字符串
【发布时间】:2017-07-14 05:08:57
【问题描述】:

我的 JSON 响应看起来像这样

(
  [0] => stdClass Object

     (
       [default] => false
       [loc] => http://somethingirrelevant.lol
       [temp] => '100'
     )

)

我想要完成的是将[LOC] 中的网址更改为https

我尝试使用:

$array = preg_replace('http','https' $array);

但这完全破坏了数组!

【问题讨论】:

    标签: php arrays preg-replace


    【解决方案1】:

    你有一个对象数组。数组键0 是具有loc 属性的对象,您可以在此处使用str_replace()

      $array[0]->loc = str_replace('http://', 'https://', $array[0]->loc);
    //$array[0]->loc = preg_replace('#http://#', 'https://', $array[0]->loc);
    

    如果你解码为一个数组:

      $array = json_decode($json, true);
    

    然后:

      $array[0]['loc'] = str_replace('http://', 'https://', $array[0]['loc']);
    

    【讨论】:

    • 不仅如此,正则表达式必须包含在分隔符之间;)
    • 我要补充的是,您应该使用 wordboundary 以避免将 https 替换为 httpss
    • @Toto 谢谢!上次我想离开吃午饭时发帖。
    【解决方案2】:

    你不能简单地调用数组,你可以做的是遍历它并用键 loc 替换每个值:

    foreach($array AS $key=>$value) {
        if(isset($value['LOC'])) {
             $array[$key]['LOC'] = preg_replace('http','https', $array);
        }
    }
    

    您可以将数组转换为常规数组而不是对象:

    if(!is_array($array)) $array = (array)array;
    

    【讨论】:

    • 其实,我复制的原始代码中有语法错误,但我应该注意到了。谢谢。
    猜你喜欢
    • 2013-06-19
    • 2014-03-27
    • 2013-09-22
    • 1970-01-01
    • 2019-03-21
    • 2013-11-28
    • 2016-02-14
    • 2011-06-26
    • 2012-07-17
    相关资源
    最近更新 更多