首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >preg_replace效率

preg_replace效率
EN

Stack Overflow用户
提问于 2011-10-04 22:55:47
回答 4查看 425关注 0票数 0

我使用preg_replace实现流行语类型的功能,使用流行语列表,在一篇文章中搜索它们,然后使用preg_replace在它们周围包装一个链接。

我的流行语是:

代码语言:javascript
复制
Online Marketing
Social Media Markeing
Social Media
Social
Brand Marketing
Brand
Search Engine Optimisation
SEO
Email Marketing
Email
Twitter
Facebook
LinkedIn

我正在做我的preg_replace像这样...

代码语言:javascript
复制
$text = preg_replace("/Online Marketing/", "<a href='".$base."online-marketing/'>Online Marketing</a>", $text);

但问题是,我必须为每个可能的变体做一个preg_replace,就像这样……

代码语言:javascript
复制
$text = preg_replace("/Online Marketing/", "<a href='".$base."online-marketing/'>Online Marketing</a>", $text);
$text = preg_replace("/Online marketing/", "<a href='".$base."online-marketing/'>Online marketing</a>", $text);
$text = preg_replace("/online marketing/", "<a href='".$base."online-marketing/'>online marketing</a>", $text);

这是非常冗长的,现在我知道我可以将数组与str_repalce一起使用,如下所示:

代码语言:javascript
复制
$from = array("Online Marketing", "Online marketing", "online marketing");
$name = str_replace($from, "", $text);

但是我看不到一种方法来找出数组的哪一部分是匹配的,然后用正确的链接替换它,因为你可以看到上面的str_replace完全删除了我的流行语,这只是一个例子。

因此,我想知道是否有人能够帮助我找到一种在str_replace或preg_replace中使用一组流行语的方法,同时还要确保它用正确的链接替换流行语。

希望有人能帮忙

EN

Stack Overflow用户

回答已采纳

发布于 2011-10-05 17:32:13

我混合了你所有的答案,这就是我的最终结果…

代码语言:javascript
复制
$Fbuzzwords = array(" online marketing", " social media marketing", " social-media-marketing", " social media", 
                " social", " brand marketing", " brand", " search engine optimisation", " seo", " email marketing", 
                " email", " e-mail marketing", " e-mail", " tiwtter", " facebook", " linkedin");

$Ubuzzwords = array("online-marketing", "social-media-marketing", "social-media-marketing", "social-media-marketing", 
                "social-media-marketing", "brand-marketing", "brand-marketing", "search-engine-optimisation", 
                "search-engine-optimisation", "online-marketing", "online-marketing", "online-marketing", 
                "online-marketing", "social-media-marketing", "social-media-marketing", "social-media-marketing");

$i = 0;

foreach ($Fbuzzwords as $buzzword)
{
    $url = $Ubuzzwords[$i];

    $Rbuzzwords = array(" <a href='".$base.$url."/'>online marketing</a>", " <a href='"
.$base.$url."/'>social media marketing</a>", 
                " <a href='".$base.$url."/'>social-media-marketing</a>", " <a href='".$base.$url."/'>social media</a>", 
                " <a href='".$base.$url."/'>social</a>", " <a href='".$base.$url."/'>brand marketing</a>", 
                " <a href='".$base.$url."/'>brand</a>", " <a href='".$base.$url."/'>search engine optimisation</a>", 
                " <a href='".$base.$url."/'>seo</a>", " <a href='".$base.$url."/'>email marketing</a>", 
                " <a href='".$base.$url."/'>email</a>", " <a href='".$base.$url."/'>e-mail marketing</a>", 
                " <a href='".$base.$url."/'>e-mail</a>", " <a href='".$base.$url."/'>tiwtter</a>", 
                " <a href='".$base.$url."/'>facebook</a>", " <a href='".$base.$url."/'>linkedin</a>");

    $replacement = $Rbuzzwords[$i];

    $text = preg_replace("/$buzzword/i", "$replacement", $text);

    $i++;
}

所以我有3个数组,1个用于在页面上查找单词,2个用于url,我循环遍历数组中每个部分的所有文本,以确保捕获每个大小写。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7649852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档