【发布时间】:2013-12-10 23:58:23
【问题描述】:
我需要有关预匹配/替换形式的帮助,我真的无法理解它的工作原理以及每个元素的作用。
到目前为止,我有这个:
$username = preg_replace('/\s+/', '_', $_POST['uname']);
if(preg_match('/^[a-zA-Z0-9]{5,12}+$/u', $username))
{
$username = trim(strip_tags(ucfirst($purifier->purify(@$_POST["uname"]))));
}
else
{
$message['uname']='wrong username input';
}
对于 utf8(希伯来语),我得到了这个:
if(preg_match("/^[\p{Hebrew} a-zA-Z0-9]{2,10}+$/u", $_POST['fname']))
{
//
}
这是完美的工作,但我不想让希伯来语的用户名只有英语。
我尝试在多种组合中使用它,我尝试改变但没有成功,我对 StackOverflow 和 Google 进行了研究,但无法让它像我想要的那样我不明白。 我使用了 RegEx 网站并尝试构建,但没有成功。
所以直到现在我才知道:
用户可以输入 5-12 个字母/数字,没有特殊字符。
我想要的是:
- 可以输入 5-12 个字母/数字,没有特殊字符 - i 已经有了。
- 允许空格
-
preg_match如果没有像 E.G 这样的混合语言:$username = שדגדשsdsd;
还有preg_replace 到:
- 将空格替换为空(删除空格)我有这个,但我不知道它是否正确:
$username = preg_replace('/\s+/', '', $_POST['uname']);
另外,我使用的是 UTF-8 语言。
编辑:
在 hwnd 的帮助下,我让它像我想要的最新代码一样工作:
if(preg_match('/^[\p{Hebrew}]{2,10}|[a-zA-Z]{2,10}$/u', $_POST['fname']) && preg_match('/^[a-zA-Z]{2,10}|[\p{Hebrew}]{2,10}$/u', $_POST['fname']))
{
$message = 'valid';
}else{
$message = 'Invalid';
}
已解决,谢谢。
【问题讨论】: