我需要帮助与preg匹配/替换forma我真的不能理解它的工作方式以及每个元素在做什么。Preg match和Preg替换特定格式
到目前为止,我有这样的:
$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字母/数字没有特别charcaters之间的输入 - 我 已经拥有了它。
- 允许空格
preg_match
如果没有混合语言的像E.G:$ username = santadvders 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';
}
解决,谢谢。
是啊。 E.G:你用用户名= hwnd - 可以。你使用的用户名=רביב - 它的好。但如果你使用username = hwרב - 它不允许没有混合语言 – Ravg
好吧,我试了它,它不好,它总是假的,即使我混合,即使我不混合,我试图用rubular.com解决它,但你不明白为什么?并用最新的代码编辑你的答案。 – Ravg