将单词转换为产品说明中的链接

时间:2011-10-24 17:46:56

标签: php mysql

我有一个带有产品说明的eccomerce网站,有时产品会描述网站上的其他产品,我想要一种链接到其他产品的方法,而无需手动将<a>标记放在描述中。

我在考虑可能会将描述与我的产品数据库进行比较,以查看是否有任何单词与产品名称相匹配,但我不知道该如何去做,如果要在mysql数据库上加载很多来检查每次页面加载。

我在考虑explode描述中的空白区域,但有些产品中有空格,所以我认为不会有效。

1 个答案:

答案 0 :(得分:0)

您可以按照以下方式处理此问题。

列出阵列中的所有产品名称。如果您不想在每次呈现页面时都要查询数据库,可以使用APCmemcache等来缓存此内容。

在渲染网站时执行简单的字符串替换。结果也可以使用上面提到的机制进行缓存,或者 - 如果您正在使用支持此功能的机制 - 借助模板系统的缓存功能。

但是,请注意由于产品名称过于宽泛而导致的误报。

简单示例:

// 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;