str_replace任何数字?

时间:2013-03-20 18:25:21

标签: php numbers str-replace

我对str_replace有一点问题......

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

结果是

  Briney Spears ByGun GunByFast

任何人都可以帮忙吗?我正在寻找“ Briney Spears ByGun 2013 ”的结果? 感谢

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

您可以更改替换顺序(替换之后的一年)或使用数组方法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

答案 2 :(得分:1)

我不知道我是否理解你的问题。但你可以这样做:

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

这将取代ByGun的12而不替换2012。如果你需要所有月份,你可以在数组中将“1”设置为“12”。保持前后的空间。

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

然后,像你一样替换年份。

答案 3 :(得分: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);

Example