我使用preg_replace实现流行语类型的功能,使用流行语列表,在一篇文章中搜索它们,然后使用preg_replace在它们周围包装一个链接。
我的流行语是:
Online Marketing
Social Media Markeing
Social Media
Social
Brand Marketing
Brand
Search Engine Optimisation
SEO
Email Marketing
Email
Twitter
Facebook
LinkedIn我正在做我的preg_replace像这样...
$text = preg_replace("/Online Marketing/", "<a href='".$base."online-marketing/'>Online Marketing</a>", $text);但问题是,我必须为每个可能的变体做一个preg_replace,就像这样……
$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一起使用,如下所示:
$from = array("Online Marketing", "Online marketing", "online marketing");
$name = str_replace($from, "", $text);但是我看不到一种方法来找出数组的哪一部分是匹配的,然后用正确的链接替换它,因为你可以看到上面的str_replace完全删除了我的流行语,这只是一个例子。
因此,我想知道是否有人能够帮助我找到一种在str_replace或preg_replace中使用一组流行语的方法,同时还要确保它用正确的链接替换流行语。
希望有人能帮忙
发布于 2011-10-05 17:32:13
我混合了你所有的答案,这就是我的最终结果…
$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,我循环遍历数组中每个部分的所有文本,以确保捕获每个大小写。
https://stackoverflow.com/questions/7649852
复制相似问题