2012-08-29 59 views
0

我有麻煩讓我的preg_replace工作的某個字符串。這是我原來的流看起來像一個例子:簡單的preg_replace不起作用

「這只是一個十簡單|巨大|快速}測試來驗證{我|您的|自己}正則表達式」

我想要做的是什麼:我想將「{}」之間的部分替換爲介於兩者之間的一個(第一個)部分。例如:

「這只是一個簡單的測試來驗證我的正則表達式」

所以基本上我目前做的是:

foreach ($zeilen as $key => $value) { 

    preg_match_all('/\{(.*?)\}/', $value[15], $arr1); 

    foreach($arr1[1] as $key2 => $arrValue){ 
     preg_match_all('/(.*?)\|/', $arrValue, $arr2); 
    } 

    preg_replace('/\{(.*?)\}/', 'test', $value[15]); 

    echo '<tr>'; 
    echo '<td>'. $value[15] . '</td>'; 
    echo '</tr>'; 

    } 

我使用foreach循環那裏,因爲有不同的具有完全相同圖案的線條我想要被替換。我很確定有更好的方法來做到這一點,也許有人甚至可以向我建議一個。我的問題在於,preg_replace根本不起作用。 $ value [15]得到的迴應與之前的{}之間的單詞完全一樣。沒有顯示「測試」。正則表達式我不是很好!

非常感謝任何人的幫助!

回答

1

您不在任何地方存儲替換的值。另外,如果在循環外使用替換,它可能會影響模式的所有發生。我認爲這將有助於:

foreach ($zeilen as $key => $value) { 

preg_match_all('/\{(.*?)\}/', $value[15], $arr1); 

foreach($arr1[1] as $key2 => $arrValue){ 
    preg_match('/(.*?)\|/', $arrValue, $arr2); 
    $value[15]=str_replace($arr1[0][$key2], $arr2[1], $value[15]); 
} 

echo '<tr>'; 
echo '<td>'. $value[15] . '</td>'; 
echo '</tr>'; 

} 
+0

它的作品就像一個魅力。非常感謝! – puelo