1

さて、これは私が持っていた前の質問にリンクされています。私は一般的にPHPに非常に慣れていないので、他の誰かが私のフォーラムで働くために行ったことを修正するために必要なだけです。

これは私が現在持っているものです:

// Alter post output to create links to user profiles
$post->message = preg_replace(
   '/@ *('.preg_quote($speak['username'], '/').')[:,.]? */i',
'[url=\''.PAGE_URL.RELATIVE_WBB_DIR.'/index.php?'
. 'page=User&userID='.$speak['toID'].'\']@'.$ speak['username'].':[/url]',
                              $post->message);

これは変更する必要があります:

@JamesNorris, @JamesNorris: @JamesNorris

ユーザープロファイルリンクへ、そしてそれはします。唯一の問題は、それが行う他の変更がこれであるということです:

@JamesNorris:@JamesNorris:@JamesNorris:

これは、前に示したその行からの出力です。どうやらそれは'、'と空白を削除し、':'を配置しています。

誰かがこの問題を解決する方法について何かアイデアがありますか?

4

1 に答える 1

2

,:.を独自のグループとしてキャプチャし、置換で参照できます。

('preg_quote(...)')([:,. ])? */i',
   '[url...'.$speak['username'].'\2[/url]'

これ\2は、2番目のグループでキャプチャされたもの(コロン、コンマ、ピリオド、スペース)です。これ\2は、ユーザー名用の別のキャプチャグループ(使用していない)がすでにあるためです。

于 2013-01-22T15:43:06.643 に答える