从json数据中替换多个字符串

时间:2013-03-25 07:27:51

标签: php json

这是我写的代码

<?php 
            $response = file_get_contents('like.json');
            $arr =json_decode($response);
            foreach($arr->likes->data as $category){
                $findme    = $category->name;
                $search = 'Lets play Cricket today, what do you say about playing Bangladesh cricket CHI?';
                $pos2 = stripos($search, $findme);
                if ($pos2 !== false) {
                    $search = str_ireplace ( $findme , '<b>'.$findme.'</b>' , $search );
                    echo $search;               
                }       
        }

?>

这里,我在$ category-&gt;名称中得到字符串数组  孟加拉国,板球,CHI,体育...... 现在在我的$ search字符串中我有一个小段落,我想替换$ category-&gt; name数组中匹配的任何单词。但问题是,如果它被多次替换,那么它会多次打印出来。

我不知道如何解决它,应该很容易,但不能正确。

2 个答案:

答案 0 :(得分:3)

在循环外声明并输出变量$search。:

$response = file_get_contents('like.json');
            $arr =json_decode($response);
$search = 'Lets play Cricket today, what do you say about playing Bangladesh cricket CHI?';

foreach($arr->likes->data as $category){
   $findme    = $category->name;
   $pos2 = stripos($search, $findme);
   if ($pos2 !== false) {
      $search = str_ireplace ( $findme , '<b>'.$findme.'</b>' , $search );            
   }       
}

echo $search;

答案 1 :(得分:2)

如果要替换搜索字符串中的所有类别名称,请先替换它们,然后以这种方式回显搜索字符串:

$response = file_get_contents('like.json');
$arr =json_decode($response);
$search = "Lets play Cricket today, what do"
         ." you say about playing Bangladesh cricket CHI?";
foreach($arr->likes->data as $category){
    $findme    = $category->name;
    $pos2 = stripos($search, $findme);
    if ($pos2 !== false) {
        $search = str_ireplace ( $findme , '<b>'.$findme.'</b>' , $search );
    }
}     
echo $search;