查找到文中的關鍵字,給關鍵字添加上超級連接,若是有進行關鍵詞替換的需求仍然能夠基於這個類進行修改。
替換順序按照數組的索引來的,能夠把規則寫入數據裏,並添加權重字段,能夠動態調整關鍵詞替換或者添加超級連接的優先級。php
<?php /** * 給文章中的匹配到字符添加上a鏈接 * Created by PhpStorm. * User: smallForest<1032817724@qq.com> * Date: 2019-06-06 * Time: 09:19 */ class addLink { protected $content = ''; protected $replace_rules = []; public function __construct($content, $replace_rules) { $this->content = $content; $this->replace_rules = $replace_rules; } public function do_replace() { //執行替換返回替換後的字符串 if (!empty($this->replace_rules)) { foreach ($this->replace_rules as $rule) { $this->content = preg_replace('/(?!<[^>]*)' . $rule['key_word'] . '(?![^<]*(>|<\/[a|sc]))/s', '<a href="' . $rule['url'] . '" target="' . $rule['target'] . '" >' . $rule['key_word'] . "</a>", $this->content, $rule['replace_times'], $count);//經過判斷count字段大於0 能夠得知替換結果 } } return $this->content; } } $rule = [ [ 'key_word' => '中國人',//關鍵詞 'url' => 'http://www.baidu.com?id=中國人',//須要加的超鏈 'target' => '_blank',//打開方式 'replace_times' => 1,//容許替換的次數次數 -1爲不限制次數! ], [ 'key_word' => '中國',//關鍵詞 'url' => 'http://www.baidu.com?id=中國',//須要加的超鏈 'target' => '_blank',//打開方式 'replace_times' => 1,//容許替換的次數次數 -1爲不限制次數! ], [ 'key_word' => '人', 'url' => 'http://www.baidu.com?id=人', 'target' => '_blank', 'replace_times' => 1, ], ]; $obj = new addLink('我是中國人', $rule); echo $obj->do_replace();