2012-04-18 14 views
1

私は、次のコードを持っている:ghi def ghi jkl mno文字列をデフォルトの位置から置き換える方法は?

しかし、私が望む結果がabc def ghi jkl mnoです:私はecho $article_textとき

$text = "abc def abc jkl mno"; 
    $regex = '/'.trim('abc').'/ism'; 
    $search = array(); 
    if(preg_match_all($regex, $text, $tmp)) { 
     if(isset($tmp[0])) {    
      for($i = 0;$i < count($tmp[0]); $i++) { 
      $search = $tmp[0][1]; 
      $replace = 'ghi'; 
      $article = str_replace($search, $replace, $text); 
      } 
     } 
    } 
     echo $article; 

結果があります。これをどうすれば解決できますか?

+0

おそらくpreg_match_allためPREG_OFFSET_CAPTUREオプションをしたいと思いますので、あなたはマッチした文字列とその文字列オフセットの両方を取得します:http://php.net/preg_match_all –

答えて

1

これを試してみてください:http://codepad.viper-7.com/dJZIJk

$text = "abc def abc jkl mno"; 
$search = 'abc'; 
$replace = 'ghi'; 
$article = substr($text, 0, strlen($search)) . str_replace($search, $replace, substr($text, strpos($text, 'abc') + strlen($search))); 
echo $article; 
関連する問題