使用preg_match_all我检索(作为示例)跟随字符串:
ABC033-101-143-147-175-142115 -
以下是代码:
if (preg_match_all('#([A-Z]{2}C)((?:[0-9]{3}-){1,10})([0-9]{6})#', $wwalist, $matches))
我可以使用以下代码获得我想要的输出(033-101-143-147-175-):
$wwaInfo['locationabbrev'][$wwanum] = $matches[2][$keys[$wwanum]];
echo "locationabbrev";
从这里开始,我需要转换3个数字的集合。每个数字都有相应的缩写。例如,033 = FY,101 = CY等。我需要locationabbrev输出一个字符串,如:“FY-CY-AY-GG-CA”而不是数字。知道怎么回事吗?
谢谢你看看!
答案 0 :(得分:4)
您可以将strtr()与替换数组一起使用。例如:
$locationabbrev = '033-101-143-147-175-'; // example data
// array of replacements
$replacements = [
'033' => 'FY',
'101' => 'CY',
// and so on
];
$translatedabbrev = strtr($locationabbrev, $replacements);
echo $translatedabbrev; // your final string
答案 1 :(得分:1)
使用explode和foreach的一种方法 再一次,Tajgeers的回答非常好。所以,除非你有一些特定的理由选择它 这只是另一种方法。
$repl = [
'033' => 'FY',
'101' => 'CY',
'143' => 'AY',
'147' => 'GG',
'175' => 'CA' ];
$locationabbrev = '033-101-143-147-175';
$arr = explode("-", $locationabbrev);
Foreach($arr as &$val){
$val= $repl[$val];
}
$result = implode("-", $arr);
Echo $result;
现在我想起来了。如果稍微更改正则表达式,则可以将正则表达式的输出作为$ arr。意义已爆炸。
还是另一个答案更好。只是一个想法。