用数组中的实际价格替换价格短代码

时间:2013-02-02 15:09:00

标签: php regex

我有这样的价格短代码:

[price ELEPHANT]
[price MONKEY_345]
[price TIGER.3TAIL]

其中大写字母(带扩展名,如果有的话)是产品SKU。

我为SKU和PRICE运行数据库查询,所以现在我想将文本中的短代码替换为项目的实际价格。

[price ELEPHANT]变为46.97

1。)我一直在使用preg_replace,但无法使用“。”或SKU中的“_”:

$text = '<p>We have the price: [price CANOPY3.75B]. This is some more text.</p>';
$pattern = '/\[(\w+) (\w+)\]/';
$replacement = '$2';
echo preg_replace($pattern, $replacement, $text);

2.。)一旦我识别出短码SKU值,如何使用它来搜索数组中的相关价格?

(希望我能把代码块搞定 - 这是我在这里的第一篇文章。)

1 个答案:

答案 0 :(得分:1)

假设你有以下数组与“名称 - 价格”对:

$prices = array('ELEPHANT' => 46.97, 'CANOPY3.75B' => 20.35, 'TIGER.3TAIL' => 30 ... etc.);

然后您可以使用以下代码:

$prices = array('ELEPHANT' => 46.97, 'CANOPY3.75B' => 20.35, 'TIGER.3TAIL' => 30,);

$text = '<p>We have the price: [price CANOPY3.75B]. This is some more text.</p>';
$pattern = '/\[price (.*?)\]/';
echo preg_replace_callback($pattern, 
        function($match)
        { 
            global $prices;
            return isset($prices[$match[1]]) ? $prices[$match[1]] : $match[1]; 
        }, 
        $text);
//output: We have the price: 20.35. This is some more text.