0

preg_replaceを特定の文字列で機能させるのに問題があります。これは、私の元のストリームがどのように見えるかの例です。

「これは、{my | your |their}正規表現を検証するための{単純|巨大|高速}テストです。」

私がやりたいのは、「{}」の間にある部分を、その間にある単語の1つ(最初の部分)に置き換えたいということです。例えば:

「これは私の正規表現を検証するための単純なテストです」

つまり、基本的に私が現在行っていることは次のとおりです。

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]は、{}の間にある単語で以前とまったく同じようにエコーアウトされています。「テスト」は表示されていません。私は正規表現があまり得意ではありません!

助けてくれた人に感謝します!

4

1 に答える 1

1

置き換えられた値はどこにも保存されていません。また、ループの外側でreplaceを使用すると、パターンのすべての出現に影響を与える可能性があります。私はこれが役立つと思います:

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>';

}
于 2012-08-29T10:21:18.003 に答える