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