替换Array PHP中的部分字符串

时间:2017-02-23 15:55:39

标签: php arrays preg-replace

我有JSON响应,看起来像这样

(
  [0] => stdClass Object

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

)

我要完成的内容会将[LOC]中的网址更改为https

我尝试使用:

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

但是这完全破坏了数组!

2 个答案:

答案 0 :(得分: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']);

答案 1 :(得分:0)

你不能简单地调用数组,你可以做的就是迭代它并用键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;