3

str_replace any number について少し問題があります...

$jud='Briney Spears 12 2009';

$jud=str_replace(array('2007','2008','2009','2010','2011','2012'),'2013',$jud);

$jud=str_replace(array('0'),'',$jud);  
$jud=str_replace(array('1'),'By',$jud);  
$jud=str_replace(array('2'),'Gun',$jud);  
$jud=str_replace(array('3'),'Fast',$jud);

echo $jud ;

結果は

ブライニー・スピアーズ ByGun GunByFast

誰でも助けることができますか?「 Briney Spears ByGun 2013」の結果を探しています。ありがとう

4

4 に答える 4

2

交換の順序を変更する (1 年後に交換する) か、アレイ アプローチを使用することができます。str_replace()

$sentence    = 'Britney Spears 12 2009';
$toreplace   = array('2009', '2012');
$replacewith = array('2013', '2013');

echo str_replace($toreplace, $replacewith, $sentence); // Britney Spears 12 2013
于 2013-03-20T18:49:42.487 に答える
2

年をプレースホルダーに置き換えてみてください。例えば:

$jud = str_replace(array('2007','2008','2009','2010','2011','2012'), '%%YEAR%%', $jud);

次に、数字を置き換えます

$jud=str_replace(array('0'),'',$jud);
$jud=str_replace(array('1'),'By',$jud);
$jud=str_replace(array('2'),'Gun',$jud);
$jud=str_replace(array('3'),'Fast',$jud);

次に、プレースホルダーを年に置き換えます。

$jud = str_replace('%%YEAR%%', 2013, $jud);
于 2013-03-20T18:33:54.610 に答える
1

あなたの質問を正しく理解しているかどうかわかりません。しかし、次のことができます。

$jud='Briney Spears 12 2009';
$jud=str_replace(" 12 ", " ByGun ", $jud);

これにより、たとえば 2012 を置き換えることなく、12 が ByGun に置き換えられます。すべての月が必要な場合は、「 1 」から「 12 」を配列に入れることができます。前後のスペースを空けてください。

$jud=str_replace(array(" 1 "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "," 10 "," 11 "," 12 "), " ByGun ", $jud);

次に、同じように年を置き換えます。

于 2013-03-20T18:29:52.843 に答える
1

ファンシーのためだけに:)

<?php
  $jud = 'Briney Spears 12 2009';
  $rep = array('', 'By', 'Gun', 'Fast');

  echo preg_replace(
    array_merge( array('/20(0[\d]|1[1-2])/'), 
      array_map( function($foo){
        return "/{$foo}(?![\d]{2,})(?!$)/";
      }, array_keys($rep))), 
        array_merge( array('2013'), $rep ), $jud, 1);

于 2013-03-20T19:14:23.187 に答える