如何使用preg_replace(_callback)依次替换hashtagged文本

时间:2011-11-07 14:43:10

标签: php regex preg-replace preg-replace-callback

目标文本类似于:

Lorem ipsum dolor#sit#amet,consectetur#adipisicing#elit,sed do#eiusmod#tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip。

标记为#sit#,#adipisicing#,#eiusmod#的相应数据将是如下数组:

array(
  '42' => 'sit somewhere',
  '43' => 'adipisicing...',
  '63' => 'eiusmod...'
)

我想使用preg_replace或preg_replace_callback来按顺序替换数组值标记的hashheet。得到结果:

Lorem ipsum dolor <a href="/link/to/42" title="sit somewhere">#sit#</a> amet, consectetur <a href="link/to/43" title="adipisicing...">#adipisicing#</a> elit, sed do <a href="/link/to/63" title="eiusmod...">#eiusmod#</a> tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip.

怎么可能实现呢?

2 个答案:

答案 0 :(得分:0)

使用str_replace可能会更好。

请参阅http://www.php.net/manual/en/function.str-replace.php

答案 1 :(得分:0)

$search = array(
    '#sit#',
    '#adipisicing#',
    '#eiusmod#'
    );
$replacement = array(
    '42' => 'sit somewhere',
    '43' => 'adipisicing...',
    '63' => 'eiusmod...'
    );
$str = str_replace($search, $replacement, $str);