php – Preg_replace西里尔字母或短语 – 不是两者
发布时间:2020-12-13 22:48:46 所属栏目:PHP教程 来源:网络整理
导读:我正在编写一个 PHP函数,它应该将某些关键字转换为链接.它使用UTF-8中的西里尔字. 所以我想出了这个: function keywords($text){ $keywords = Db::get('keywords'); //array with words and corresponding links foreach ($keywords as $value){ $keyword =
我正在编写一个
PHP函数,它应该将某些关键字转换为链接.它使用UTF-8中的西里尔字.
所以我想出了这个: function keywords($text){ $keywords = Db::get('keywords'); //array with words and corresponding links foreach ($keywords as $value){ $keyword = $value['keyword']; $link = $value['link']; $text = preg_replace('/(?<!pL)('.$keyword.')(?!pL)/iu','<a href='.$link.' class="linked">$1</a>',$text); } return $text; } 到目前为止,这就像一个魅力,但现在我想用链接替换短语 – 可能包含其他关键字的短语.例如,我希望“汽车”这个词链接到一个地方,而“蓝色汽车”链接到其他地方. 有任何想法吗? 解决方法
正如评论中所写,我将此作为答案发布,希望它对您有用.
您可以尝试首先使用占位符将关键字替换为文本,然后在解析整个文本时,可以使用实际单词替换这些占位符. 例如,请使用以下短语: "I have a car,a blue car." 我们已经将关键字列表的订购时间从长到小,因此我们可以查看“蓝色汽车”;我们在文中找到它,所以我们放置占位符并获得: "I have a car,a [[1]]." 列表中的第二个关键字是“car”;在文本中替换后,我们获得: "I have a [[2]],a [[1]]." 最后,当所有关键字都被替换后,您只需使用函数中的preg_replace替换其顺序中的占位符,并获取带有链接的文本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |