1

私は wow ギルドのためにコミュニティ サイト (html、css、および php を使用して手動で作成) を運営しています。最近、私のメンバーは、投稿で @username のようなタグを使用する機能を要求してきました。これにより、ユーザー ページにリンクされます。以下にリストされているように、私はすでにこのスクリプトを持っています:

<?php

$string = '@user really?';

if (preg_match('/(^|\s)@([a-z0-9_]+)/i', $string))
{

$string = preg_replace('/(^|\s)@([a-z0-9_]+)/i', '<a href="user/$2">@$2</a>', $string);

echo $string;
}
else {

echo $string;

}

?>

これは問題なく動作し、$2 がユーザーの名前であることに気付きましたが、すべてのユーザーの名前は大文字で始まるため、$2 は大文字にする必要があり、誰もがそうしているわけではありません。$2 を自動的に大文字にするようにコーディングする方法はありますか、それとも大文字にすることを忘れないようにユーザーに指示する必要がありますか?

よろしくお願いします、スティーブン

4

2 に答える 2

0

さらに preg_replace を追加したところ、@ 記号 (@user、@USER、@User、@uSER など) がある限り、どのように名前を入力してもユーザーにリンクされるようになりました。私のソリューションが必要な人のために、以下に投稿します。

<?php

$proper_str = "going to battle with @ADROK";

$proper_str = ucfirst(strtolower($proper_str));

$proper_str = preg_replace('/@[a-z]/e', 'ucfirst(strtoupper("$0"))', $proper_str);

$proper_str = preg_replace('/(^|\s)@([a-z0-9_]+)/i', ' <a href="user/$2">@$2</a>', $proper_str);

echo $proper_str;

?>

そして、あなたが何かを変えてそれを作るなら:

<?php

$proper_str = "going to battle with e@mail.com";

if (preg_match('/(^|\s)@([a-z0-9_]+)/i', $proper_str))

{

$proper_str = ucfirst(strtolower($proper_str));

$proper_str = preg_replace('/@[a-z]/e', 'ucfirst(strtoupper("$0"))', $proper_str);

$proper_str = preg_replace('/(^|\s)@([a-z0-9_]+)/i', ' <a href="user/$2">@$2</a>', $proper_str);

echo $proper_str;

} else {

$proper_str = ucfirst("$proper_str");

echo $proper_str;

}

?>

次に、メールアドレスをそのままにして、投稿の最初の文字が大文字であることを確認します!

于 2012-11-28T17:57:48.233 に答える
0

最初の文字を大文字にする場合は ucfirst ($2) を使用し、すべて大文字にする場合は strtoupper($2) を使用します。

于 2012-11-28T04:59:21.613 に答える