日期:2014-05-17  浏览次数:20613 次

这样的正规表达式怎么写?
Mon-Fri 8:00-23:00; Sat 10:00-23:00; Sun 10:00-22:00;

把上面变成 周一~周五8:00-23:00; 周六10:00-23:00; 周日10:00-22:00;

$str="Mon-Fri 8:00-23:00; Sat 10:00-23:00; Sun 10:00-22:00;"
$en=array("Mon", "Fri","Sat","Sun");
$cn=array("周一", "周五","周六","周日");
$str=str_replace($en, $cn, $str);

请问如何把英文之间的"-"变成~, 时间中间的不替换?
英文和数字间的空格如何替换?


------解决方案--------------------

$str="Mon-Fri 8:00-23:00; Sat 10:00-23:00; Sun 10:00-22:00";
 $en=array("Mon", "Fri","Sat","Sun");
 $cn=array("周一", "周五","周六","周日");
 $str=str_replace($en, $cn, $str);
 //echo $str;
 $a[0]='/([^\d]+)\-/';
 $a[1]='/\s(\d)/';
 $b[0]='\1~';
 $b[1]='\1';
 $str=preg_replace($a,$b, $str);
 echo $str;