用PHP替换文本

时间:2012-08-24 22:41:11

标签: php replace

我在PHP中有一个数组:

$wxCode = array(
    'VC' => 'nearby',
    'MI' => 'shallow',
    'PR' => 'partial',
    'BC' => 'patches of',
    'DR' => 'low drifting',
    'BL' => 'blowing',
    'SH' => 'showers',
    'TS' => 'thunderstorm',
    'FZ' => 'freezing',
    'DZ' => 'drizzle',
    'RA' => 'rain',
    'SN' => 'snow',
    'SG' => 'snow grains',
    'IC' => 'ice crystals',
    'PE' => 'ice pellets',
    'GR' => 'hail',
    'GS' => 'small hail',  // and/or snow pellets
    'UP' => 'unknown',
    'BR' => 'mist',
    'FG' => 'fog',
    'FU' => 'smoke',
    'VA' => 'volcanic ash',
    'DU' => 'widespread dust',
    'SA' => 'sand',
    'HZ' => 'haze',
    'PY' => 'spray',
    'PO' => 'well-developed dust/sand whirls',
    'SQ' => 'squalls',
    'FC' => 'funnel cloud, tornado, or waterspout',
    'SS' => 'sandstorm/duststorm');

如果在这里我还有一点:

    if (substr($part,0,1) == '-') {
        $prefix = 'light ';
        $part = substr($part,1);
    }
    elseif (substr($part,0,1) == '+') {
        $prefix = 'heavy ';
        $part = substr($part,1);
    }
    else $prefix = '';

但是,我想编写一个函数,将以下字符串:-RA转换为以下文本,基于数组和if:小雨。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

实际上,你几乎就在那里。只需使用$part作为$wxCode数组的键:

$wxCode[$part]

如果您没有前缀或:

$wxCode[substr($part, 1)]

如果你这样做。您可能需要使用strtoupper()来确保双字母代码全部为大写

答案 1 :(得分:1)

$str = str_replace(array('-', '+'), array('light ', 'heavy '), $str);
$str = str_replace(array_keys($wxCode), array_values($wxCode), $str);