我有一段代码可以将单个单词或短语从给定列表中转换为可点击的内部链接。仅当单词或短语尚未链接时,代码才应该执行此操作。它实际上工作得很好,除了一点:代码正在考虑来自 src 图像属性的名称。
所以,
<img src="img/xiaomi.jpg" />
正在输出
<img src="img/<a href="site.com/tag/xiaomi">Xiaomi</a>.jpg" />
正如您所看到的,正则表达式可能过于贪婪并且得到了没有得到的东西。
代码被修改为简单,但使用如下:
$content = 'All post content itself with all html tags a site can have. <p>Blabla</p> <img src="img/xiaomi.jpg" /> <p>Bliblibli</p> <p>Lorem ipsum xiaomi</p>';
$contentCopy = 'All post content itself with all html tags a site can have. <p>Blabla</p> <img src="img/xiaomi.jpg" /> <p>Bliblibli</p> <p>Lorem ipsum xiaomi</p>';
$list = $this->cache->get('wordsList');
foreach($list as $word){
$var = $word->word;
$text = preg_replace('/<a[\S\s]+?<\/a>(*SKIP)(*FAIL)|\b'.$var.'\b/i', '<a href="'.base_url('site/tag/'.url_title($var)).'" target="_blank" title="'.ucfirst($var).'">$0</a>', $text);
}
$content = str_replace($contentCopy,$text,$content);
你们能帮忙改进这段代码吗?
显然问题仅存在于图像标签中。
我使用此代码段自动为存储的页面创建内部链接并帮助网站 SEO