如何转换$匹配PHP中preg_match_all的数组输出

时间:2017-07-14 21:17:03

标签: php

使用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”而不是数字。知道怎么回事吗?

谢谢你看看!

2 个答案:

答案 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;

https://3v4l.org/iolal

现在我想起来了。如果稍微更改正则表达式,则可以将正则表达式的输出作为$ arr。意义已爆炸。
还是另一个答案更好。只是一个想法。