我正在尝试实现此joomla插件,以通过某些内容中的链接替换{twitter}demo_user{/twitter}
和{facebook}demo_user{/facebook}
。
<?php
defined('_JEXEC') or die('Access Deny');
class plgContentSocial extends jplugin
{
function onContentPrepare($context, $article, $params, $limit)
{
preg_match_all('/{twitter}(.*?){\/twitter}/is', $article->text, matches)
$i=0;
foreach ($matches[0] as $match) {
$twitter_username=$matches[1][$1];
$article->text=str_replace($match, '<a href="http://twitter.com/'.$twitter_username.'"follow me on twitter</a>', $article->tex)
$i++
}
preg_match_all('/{facebook}(.*?){\/facebook}/is', $article->text, matches)
$i=0;
foreach ($matches[0] as $match) {
$facebook_username=$matches[1][$1];
$article->text=str_replace($match, '<a href="http://facebook.com/'.$facebook_username.'"follow me on facebook</a>', $article->tex)
$i++
}
}
}
?>
我的问题是:如何使用{social type=twitter}demo_user{/social}
和{social type=facebook}demo_user{/social}
之类的内容?我不想为每个社交网络重复preg_match_all
。有没有办法实现它?
非常感谢你的指导
答案 0 :(得分:1)
请先阅读本手册。这是一个非常基本的正则表达式问题。
使用以下正则表达式。
'/{social type="(facebook|twitter)"}(.*?){\/facebook}/is'
你必须改变
$type=$matches[1][$1];
$username=$matches[2][$1];