我有一个带有产品说明的eccomerce网站,有时产品会描述网站上的其他产品,我想要一种链接到其他产品的方法,而无需手动将<a>
标记放在描述中。
我在考虑可能会将描述与我的产品数据库进行比较,以查看是否有任何单词与产品名称相匹配,但我不知道该如何去做,如果要在mysql数据库上加载很多来检查每次页面加载。
我在考虑explode
描述中的空白区域,但有些产品中有空格,所以我认为不会有效。
答案 0 :(得分:0)
您可以按照以下方式处理此问题。
列出阵列中的所有产品名称。如果您不想在每次呈现页面时都要查询数据库,可以使用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;