PHP后提取字符串@

时间:2014-11-05 16:57:13

标签: php mysql preg-match-all

我需要一个PHP函数来在@之后提取一个字符串 例如,在Facebook上,如果您编写@username,则用户名将自动替换为个人资料URL。我想做类似的事情,检测@username,看看数据库中是否存在用户名,如果存在,那么脚本将返回他的个人资料网址。我知道检查用户名是否存在于数据库中并生成配置文件URL,但我不知道如何从字符串中检测@username(也可以是同一字符串上的@ username1,@ username2等)。如果你能给我一个例子或者为我提供一个功能,我将非常感激。谢谢!

2 个答案:

答案 0 :(得分:2)

未经测试,但正则表达式替换为(@[A-Za-z0-9]{1,})

找到任何字符A-z0-9(通常被接受为用户名)

$text = preg_replace_callback(
        '@([A-Za-z0-9]{1,})',
        function ($matches) {
            return '<a href="profileURL">'.$matches[1].'</a>';
        },
        $text
    );

<强>更新

根据评论,您可以使用

生成数组

preg_match_all('@([A-Za-z0-9]{1,})', $text, $matches);

这将返回一个多维数组,其中$matches[0]为原始文本,$matches[1]包含已找到名称的数组(减去@)

答案 1 :(得分:1)

如果您确定&#34; @&#34;只会在字符串中出现一次,然后您可以使用php函数跳过第一个字符并取其余部分。或者使用str_replace()替换&#34; @&#34;从字符串。但如果有可能获得矿石而不是&#34; @&#34;字符串中的符号,那么你可以使用explode()来表示&#34; @&#34;并获得所有字符串。但是,您必须检查您将收到的数组中的验证。