所以我尝试使用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
任何帮助?
答案 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;);