2016-01-13 134 views
1

嗨,我用不同的值替換某些名稱。這裏是我更換"@size-name""@size"。但問題是價值觀我的代碼只更換尺寸第一,注意名稱,例如PHP匹配並替換整個字

@size = "replaceword" 
@size-name = "replaceword2" 

但其更換

@size ="replaceword" 
@size-name = "replaceword2-name" 

我怎麼能代替整字不屬於它在這裏是我的代碼

$tempOutQuery = preg_replace("/(\b($key)\b)/i" , $value , $tempOutQuery); 
    $tempOutQuery= str_replace("@".$key ,$value ,$tempOutQuery); 

兩個代碼不工作

我的全部代碼

$val= "Hi I want @size dress which is @size-name"; 

$tempOutQuery = preg_replace("/(\b(size)\b)/i" ,"replaceword", $tempOutQuery); 
$tempOutQuery = preg_replace("/(\b(size-name)\b)/i" ,"replaceword2", $tempOutQuery); 
+0

把你完整的代碼 –

+0

我加小碼來解釋你,我想請檢查什麼謝謝 – Allex

+0

我糾正一些輸入錯誤,但我需要知道你需要得到什麼(這意味着,最終文本應該是什麼)。 –

回答

1

如果你能不使用regulat表達式替換,那麼我會建議使用非標準str_replace()使用數組:

$val= "Hi i want @size dress which is @size-name"; 

$search = array('size-name', 'size'); 
$replace = array('replaceword2', 'replaceword'); 

$result = str_replace($search, $replace, $val); 

搜索的順序和替換字符串是重要! 你應該小心,你先替換長搜索字符串,稍後再替換短字符串。

0

這是另一個選項,使用preg_replace_callback。它實際上與Gennadiy的方法非常相似。唯一真正的區別是,它使用PHP的preg方面(並且它有更多的工作)。但這是另一種玷污諺語貓的方式。

<?php 

// SET OUR DEFAULT STRING 
$string = 'Hi I want @size suit which is @size-name'; 

// LOOK FOR EITHER size-name OR size AND IF YOU FIND IT ... 
// RUN THE FUNCTION 'replace_sizes' 
$string = preg_replace_callback('[email protected](size-name|size)~', 'replace_sizes', $string); 

// PRINT OUT OUR MODIFIED STRING 
print $string; 




// THIS IS THE FUNCTION THAT WILL BE RUN EVERY TIME A MATCH IS FOUND 
// EITHER 'size' OR 'size-name' WILL BE STORED IN $m[1] 
function replace_sizes($m) { 

    // SET UP AN ARRAY THAT HAS OUR POTENTIAL MATCHES AS KEYS 
    // AND THE TEXT WE WANT TO REPLACE WITH AS THE VALUE 
    $size_text_array = array('size-name' => 'replaceword2', 'size' => 'replaceword'); 

    // RETURN WHATEVER THE VALUE IS BASED ON THE KEY 
    return $size_text_array[$m[1]]; 

} 

這將打印出:

Hi I want replaceword suit which is replaceword2 

這裏是一個工作演示:

http://ideone.com/njNTbB

0

您可以嘗試pre_replace()從數組中的項目替換整個單詞在PHP中顯示如下。

<?PHP 
     function removePrepositions($text){ 

      $propositions=array('/\bfor\b/i','/\band\b/i'); 

      if(count($propositions) > 0) { 
       foreach($propositions as $exceptionPhrase) { 
        $text = preg_replace($exceptionPhrase, '', trim($text)); 

       } 
      $retval = trim($text); 

      } 
     return $retval; 
    } 



?> 

看到整個post here

+0

你回答什麼問題?這與OP的無關。 – Toto