2014-11-25 66 views
0

我有一個對象,如下所示:pastebin.com我想查找每個「a」並用帶下劃線的「a」替換。我試過像: preg_replace("/(" . preg_quote("a") . ")/", "<u>$1</u>", $object); 但它返回一個字符串不是對象或數組。我該怎麼做?如何查找和替換對象中的文本

+0

[*的preg_replace()返回一個數組,如果subject參數是一個數組,或者一個字符串,否則。*](http://php.net/manual/en/function.preg-replace.php) - 你傳遞一個JSON字符串,所以你得到一個弦回來。 – George 2014-11-25 10:13:53

+0

我該如何改變它? – Zolax 2014-11-25 10:15:27

+0

你是什麼意思*改變它*?你在期待什麼? – George 2014-11-25 10:15:48

回答

1

目前你有一個JSON字符串。你有什麼工作,但可以讓你插入<u>標籤到你不想要的JSON密鑰中。

如何關於每個元素此JSON第一轉換成陣列,通過陣列循環,並更新與該有a條取代的值:

$arr = json_decode($json, true); 
foreach($arr as &$elm){ 
    $elm = array_map(function($i){ 
     return preg_replace("/(" . preg_quote("a") . ")/", "<u>$1</u>", $i); 
    }, $elm); 
} 

Demo

+0

非常感謝你 – Zolax 2014-11-25 10:49:23

+0

如果變量來自'array_map()'函數之外,你需要使用它。 'array_map(function($ i)use($ var){..},$ a)' – George 2014-11-25 10:50:16