Flarum论坛支持中文用户名的方法
今天在使用微博登录拓展时发现,微博用户的用户名多为中文,而Flarum又不支持中文用户名注册。
我找到的对于中文用户名注册的解决方法是这样的:
将/vendor/flarum/core/src/User/UserValidator.php
中约47行的
'regex:/^[a-z0-9_-]+$/i',
更改为:
'regex:/^[-_a-zA-Z0-9\x7f-\xff]+$/i',
再将/vendor/flarum/core/src/Forum/Auth/Registration.php
中约101行的
$username = preg_replace('/[^a-z0-9-_]/i', '', $username);
注释掉,成为:
// $username = preg_replace('/[^a-z0-9-_]/i', '', $username);
随后,你会发现无法at中文用户名的用户、进入中文用户名的用户个人主页会出现“找不到此资源”的问题。
为了支持at中文用户名的用户,需要将/vendor/flarum/mentions/src/ConfigureMentions.php
中约53行的
$config->Preg->match('/\B@(?<username>[a-z0-9_-]+)(?!#)/i', $tagName);
修改为:
$config->Preg->match('/\B@(?<username>[\p{L}\p{N}_-]+)(?!#)/ui', $tagName);
将约91行的
$config->Preg->match('/\B@(?<username>[a-z0-9_-]+)(?!#)/i', $tagName);
修改为:
$config->Preg->match('/\B@(?<username>[\p{L}\p{N}_-]+)#(?<id>\d+)/ui', $tagName);
这样就成功的支持了at中文用户名的用户。
下面是解决“找不到此资源”问题的方法:
将/vendor/flarum/core/src/Api/Controller/ShowUserController.php
中约52行的
$id = $this->users->getIdForUsername($id);
修改为:
$id = $this->users->getIdForUsername(urldecode($id));
这样,Flarum论坛就完全支持中文用户名的使用了!
我这个代码高亮太瞎眼了
- 分类:技术
其实不支持的原因在于三点:
\w
取代[a-z0-9_-]
,\W
取代[^a-z0-9-_]
则可以获得较好的中文支持(同时也方便正则引擎进行性能优化奇怪,是不支持 Markdown 的列表语法吗?
似乎是这个主题css的问题
看生成的 HTML 应该是直接把序号干掉了当表格处理了,我认为需要修正下
(另外评论如果有预览功能就更好了
css给了
<ol>
一个list-style: none;
,在改了这个主题评论区的问题挺多的(
此外,关于代码高亮,Highlight.js 是可以换主题的
然后是你的 $\KaTeX$ 该更新了 (从 0.10.0 到 0.12.0 )
请问具体过程如何操作呢,看不懂哈哈哈awa