-1

私はこのようなものが必要です:

$string = "That's a big apple, a red apple";
$arr = array(apple, lemon);
$arr2 = array(APPLE, LEMON);
preg_replace('/($arr)/i', $arr2, $string, 1);
//output = That's a big APPLE, a red apple

これは、配列を使用して単語を大文字に置き換えることを意味しますが、大文字と小文字を区別しない最初の一致のみです。

4

4 に答える 4

3

配列の各値が正規表現である必要がある場合、最初の変数は正しくありません

$arr = array('/\b(apple)\b/i', '/\b(lemon)\b/i');
$arr2 = array('APPLE', 'LEMON');

preg_replace($arr, $arr2, $string, 1);

編集:これを更新して、場合によっては役立つ可能性のある単語の境界を含めました

于 2013-07-16T21:02:34.577 に答える
0
$string = "That's a big apple, a red apple.";
$words = array('APPLE', 'LEMON');
foreach ($words as $word){
    $ini = stristr($string, $word, TRUE);
    if ($ini){
        $string = $ini.$word.substr($string, strlen($ini.$word));
        break;
    }
}
echo $string;

出力:

それは大きなリンゴ、赤いリンゴです。

于 2013-07-16T21:14:27.717 に答える
0

strtr()正規表現の代わりに使用します:

$string = "That's a big apple, a red apple";
$string = strtr( $string, array( 'apple' => 'APPLE', 'lemon' => 'LEMON'));
于 2013-07-16T21:04:14.480 に答える
0

コードにはいくつかの問題があります。

  • 配列内の文字列を引用する必要があります。そうでない場合、PHP はそれらを定数として解釈しようとします。

  • 変数を正規表現文字列に入れることはできません$arr。配列をループして、配列項目の文字列値を使用する必要がありますpreg_replace

  • preg_replaceすべての正規表現を置き換えます

文字列の最初の出現のみを置き換えたい場合は、 と の組み合わせを試すことができstrposますsubstr_replace

于 2013-07-16T21:05:47.287 に答える