试图为用户名制作@标签

时间:2017-12-05 17:07:33

标签: php preg-replace

所以我尝试使用preg_replace让@在我的php游戏中标记用户名。

这是我的代码:

$find[13] = '@';
$replace[13] = '<a href="profil.php?username=$1">';

return preg_replace($find,$replace,$text);

我只收到此警告信息:

Warning: preg_replace(): No ending delimiter '@' found in C:\xampp\htdocs\mafiagamev2\functions\bbcodes.php on line 61

任何帮助?

2 个答案:

答案 0 :(得分:0)

问题是preg_replace()需要正则表达式作为搜索字符串。大多数编程语言都有正则表达式,但不是PHP。在这里,您将模式定义为字符串,并使用包围该模式的分隔符。您基本上可以使用大多数字母数字字符,包括@,但最常用的是/。所以preg_replace期望一个包含在分隔符中的模式,并且您只提供了一个字符,PHP将其解释为开头分隔符。

您要做的是用链接替换所有以@开头的单词。很多这种正则表达式取决于你如何验证用户名。对于这个例子,我假设你只允许使用大写和小写的字母数字字符,数字,连字符和下划线:

preg_replace('/(^|\s)@([\w\d-_]+)/g', '<a href="profil.php?username=$2">$2</a>')

Get the explanation and try it out

请注意,您可能会生成大量死链接。我建议在输入过程中使用JavaScript进行验证,或者验证用户名来替换数据库。

答案 1 :(得分:-1)

尝试使用str_replace它可以使用相同的

str_replace(&#34;%body%&#34;,&#34; black&#34;,&#34;&#34;);

http://php.net/manual/en/function.str-replace.php