我为我的哇公会运行了一个社区网站(使用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美元资本化,或者我应该告诉用户记住大写吗?
Thanx提前, 史蒂芬
答案 0 :(得分:0)
使用ucfirst($ 2)来大写第一个字符 和strtoupper($ 2)如果你想要它全部资本
答案 1 :(得分:0)
我添加了更多的preg_replace,它现在链接到用户,无论你的类型名称如何,只要你有@符号(@ user,@ USER,@ User,@ SUER等等)。对于需要我的解决方案的任何人,我将在下面发布:
<?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;
}
?>
然后它会单独留下电子邮件地址,并确保首字母大写!