因此,我试图在我的php游戏中使用preg_replace来制作@ to标记用户名。
这是我的代码:
$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有什么帮助吗?
发布于 2017-12-05 20:22:05
问题是preg_replace()需要一个正则表达式作为搜索字符串。大多数编程语言都有regex类型,但没有PHP。在这里,您将模式定义为带有分隔符的字符串。基本上可以使用大多数字母数字字符,包括@,但最常用的是/。因此,preg_replace需要一个包含在分隔符中的模式,并且您只提供了一个字符,PHP将其解释为开始分隔符。
您想要做的是用链接替换以@开头的所有单词。在很多情况下,这个正则表达式取决于您如何验证用户名。在本例中,我假设您只允许大小写字母数字字符、数字、连字符和下划线:
preg_replace('/(^|\s)@([\w\d-_]+)/g', '<a href="profil.php?username=$2">$2</a>')请注意,您可能会生成许多死链接。我建议在输入期间使用JavaScript进行验证,或者根据数据库验证要替换的用户名。
https://stackoverflow.com/questions/47658999
复制相似问题