php – Preg_replace西里尔字母或短语 – 不是两者

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Preg_replace西里尔字母或短语 – 不是两者脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个 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替换其顺序中的占位符,并获取带有链接的文本.

脚本宝典总结

以上是脚本宝典为你收集整理的php – Preg_replace西里尔字母或短语 – 不是两者全部内容,希望文章能够帮你解决php – Preg_replace西里尔字母或短语 – 不是两者所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。