2 回答
TA贡献2039条经验 获得超7个赞
由于您的原始字符串已经格式化并且此格式是已知的,因此您无需使用正则表达式模式来探索它,您可以通过简单的替换来完成:
$s = <<<'EOD'
bj-11_2008-06_2015(F01,F02,F03,F04)
bj-11_2008-06_2015(F01)
bj-11_2008-06_2015(01)
bj-11_2008-06_2015(3B)
bj-11_2008-06_2015
bj-11_2008
EOD;
$trans = [ 'bj-' => '', '_' => '|', '-' => ' - ', '(' => ' (',
',' => ';' ];
echo strtr($s, $trans);
TA贡献1871条经验 获得超13个赞
没有任何正则表达式,仅使用一些子字符串:
$input='bj-11_2008-06_2015(F01,F02,F03,F04)';
$s1=$s2=$s3='';
$sub = substr($input,3,7); // => 11_2008
$s1 = str_replace('_','|',$sub); // => 11|2008
$sub = substr($input,11,7); // => 06_2015
if($sub !== false){
$s2 = ' - '.str_replace('_','|',$sub); // => - 06|2015
}
$sub = substr($input,18); // => (F01,F02,F03,F04)
if($sub !== false){
$s3 = str_replace(',',';',$sub); // => (F01;F02;F03;F04)
}
$result = $s1.$s2.$s3; // => 11|2008 - 06|2015 (F01;F02;F03;F04)
- 2 回答
- 0 关注
- 89 浏览
添加回答
举报