Joomla替换标签

时间:2014-07-12 06:30:58

标签: php plugins joomla

我正在尝试实现此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。有没有办法实现它?

非常感谢你的指导

1 个答案:

答案 0 :(得分:1)

请先阅读本手册。这是一个非常基本的正则表达式问题。

使用以下正则表达式。

'/{social type="(facebook|twitter)"}(.*?){\/facebook}/is'

你必须改变

 $type=$matches[1][$1];
 $username=$matches[2][$1];