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

Php 将单词转换为产品说明中的链接,php,mysql,Php,Mysql,我有一个ECOMERCE网站,上面有产品描述,有时一个产品会在网站上描述另一个产品,我希望有一种方法可以链接到另一个产品,而无需手动在描述中添加标签 我在想,也许可以将描述与我的产品数据库进行比较,看看是否有任何单词与产品名称匹配,但我不确定如何进行,以及每次加载页面时检查mysql数据库是否会有很大的负载 我本来想把描述中的空格分解,但有些产品中有空格,所以我认为这不管用。你可以按如下方式处理 在一个数组中列出所有产品名称。如果不希望每次呈现页面时都查询数据库,可以使用或类似的方法对此进行缓存

我有一个ECOMERCE网站,上面有产品描述,有时一个产品会在网站上描述另一个产品,我希望有一种方法可以链接到另一个产品,而无需手动在描述中添加标签

我在想,也许可以将描述与我的产品数据库进行比较,看看是否有任何单词与产品名称匹配,但我不确定如何进行,以及每次加载页面时检查mysql数据库是否会有很大的负载


我本来想把描述中的空格分解,但有些产品中有空格,所以我认为这不管用。

你可以按如下方式处理

在一个数组中列出所有产品名称。如果不希望每次呈现页面时都查询数据库,可以使用或类似的方法对此进行缓存

渲染站点时,请执行简单的字符串替换。结果也可以使用上面提到的机制进行缓存,或者(如果您使用的是支持这种机制的机制)借助模板系统的缓存功能进行缓存


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

简单的例子:

// 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循环可以很容易地将单词/短语转换成链接。我的答案就是这样。但是,要小心由于产品名称过于宽泛而产生的误报。这就是我现在遇到的问题。所以不要对所有的产品都这样做,只对那些有特定名称的产品这样做?或者,使用某种标记,例如,这要求您编辑所有遗留内容。