1

我为我的 wow guild 运行一个社区站点(使用 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 回答