如何在PHP中进行文本替换?

时间:2014-04-21 18:30:56

标签: php string replace vbulletin

所以我在一个非常受欢迎的vbulletin插件中添加命令,而且无论我尝试什么,我似乎无法正常工作。我到目前为止的代码是

$cybcb_checkban = strpos($vbulletin->GPC['ccb_newmessage'], '/ban');
                if($cybcb_checkban !== false AND $cybcb_candelall)
                {
                    $banuserurl = $vbulletin->options['bburl'].'/misc.php?'.$vbulletin->session->vars['sessionurl'].'do=ccb_banuser&u=2';exec_header_redirect($banuserurl);
                }

我需要它做的是说

的部分
do=ccb_banuser&u=2

2 替换为聊天中输入的文字。

vbulletin有一种自己的语言,但它的基本概念是PHP 但作为参考,这是插件中已有的默认命令

$cybcb_checkme = strpos($vbulletin->GPC['ccb_newmessage'], '/me ');
                if ($cybcb_checkme !== false)
                {
                    $vbulletin->GPC['ccb_newmessage'] = str_replace('/me ', $vbulletin->userinfo['username'].' ', $vbulletin->GPC['ccb_newmessage']);
                    $vbulletin->GPC['ccb_newmessage'] = '[color='.$vbulletin->options['cybchatbox_mecolor'].']* '.$vbulletin->GPC['ccb_newmessage'].'[/color]';
                }

我已经玩了好几天了,而且我唯一能够半工作的结果是顶部的第一个代码,你可能猜到的问题就是输入

/ban (USER ID HERE)

唯一将被禁止的用户是用户2(显然)

所以我只需要一些可以让代码成为/ ban(userID)

的东西

我知道它必须像

$banuserurl = $vbulletin->options['bburl'].'/misc.php?'.$vbulletin->session->vars['sessionurl'].'do=ccb_banuser&u=.$vbulletin->GPC['ccb_newmessage']';exec_header_redirect($banuserurl);

但这似乎不起作用= /任何人都有答案?或者可以指出我正确的方向,我非常感激=)谢谢。

1 个答案:

答案 0 :(得分:0)

$vbulletin->GPC['ccb_newmessage']将包含整个消息,因此如果您发送 /ban 123455

$vbulletin->GPC['ccb_newmessage']/ban 123455 你可以做的是删除' / ban'并且您将留下用户ID

类似

$cybcb_checkban = strpos($vbulletin->GPC['ccb_newmessage'], '/ban');
                if($cybcb_checkban !== false AND $cybcb_candelall)
                {
                    $vbulletin->GPC['ccb_newmessage'] = str_replace('/ban ', '', $vbulletin->GPC['ccb_newmessage']);
                    $banuserurl = $vbulletin->options['bburl'].'/misc.php?'.$vbulletin->session->vars['sessionurl'].'do=ccb_banuser&u=' . $vbulletin->GPC['ccb_newmessage'];
                    exec_header_redirect($banuserurl);
                }

$cybcb_checkban = strpos($vbulletin->GPC['ccb_newmessage'], '/ban');
                if($cybcb_checkban !== false AND $cybcb_candelall)
                {
                    $banuserurl = $vbulletin->options['bburl'].'/misc.php?'.$vbulletin->session->vars['sessionurl'].'do=ccb_banuser&u=' . substr($vbulletin->GPC['ccb_newmessage'], 4);
                    exec_header_redirect($banuserurl);
                }

应该有效

注意:4可能应该用substr($vbulletin->GPC['ccb_newmessage'], strpos($vbulletin->GPC['ccb_newmessage'], '/ban') + strlen('/ban'));

之类的东西替换