次のようにこれにアプローチできます。
アレイ内のすべての製品名の一覧があります。ページをレンダリングするたびにデータベースを照会したくない場合は、APC、memcacheなどを使用してキャッシュすることができます。
サイトをレンダリングするときに、単純な文字列の置換を行います。結果は、テンプレートシステムのキャッシング機能の助けを借りて上記のメカニズムを使用してキャッシュすることも、キャッシュを使用することもできます。
しかし、過度に広い製品名に起因する誤検出に注意してください。
単純な例:
// product names and links (from db or cache)
$products = array('Flux Capacitor' => 'http://example.com/fluxcapacitor/');
// unprocessed content
$content = 'Lorem ipsum Flux Capacitor bla foo bar flux.';
// TODO apply htmlspecialchars, htmlentities or whatever you
// (this needs to be done BEFORE you insert links)
foreach($products as $name => $link){
$content = str_replace($name, '<a href="'.$link.'">'.$name.'</a>', $content);
}
// 'Flux Capacitor' now should link to its product site. Let's echo the content.
echo $content;
は、多くの偽陽性がないだろうと十分にユニークな製品名はありますか?単純なstr_replaceループは簡単に単語/フレーズをリンクにすることができます。 –
私の答えはそのようなアプローチをとっています。 – middus